首页 > 其他分享 >Scala:函数基本概念

Scala:函数基本概念

时间:2022-10-02 18:00:43浏览次数:56  
标签:调用 name Scala Int String 基本概念 def 函数

函数

//无输入函数  def <identifier> = <expression>
def hi ="hi"
//无输入指定返回类型函数 def <identifier>:<type> = <expression>
def hi:String ="hi"
//完整函数def <identifier>(<identifier>:<type>[,...]):<type> = <expression>
def multiplier(x:Int,y:Int):Int =x*y
//用空括号定义函数 def ():<type> = <expression> //便于区分函数和值
def good():String="good"
//空括号函数的调用方式
good() //可以调用
good //可以调用
def good1:String="good1"
good1 //可以调用
good() //不可以调用
//使用表达块调用函数 <function identifier><expression block>
def formatEuo(x:Double)= f" C $x%.2f "
formatEuo(2341.5)
formatEuo{val i= 23344; i*2344.5} //使用表达式块调用
/**
* 递归函数,自身调用自身,需要检查某类参数和外部条件来避免函数调用进入无限循环。
* 递归函数如果递归次数较多 会发生栈溢出的错误
* scala通过尾递归 优化部分递归函数,使递归调用不采用额外的栈空间。
* 只有最后一个语句是递归函数才能由优化为尾递归
* 利用函数注解(function annotation)标记的函数会完成 尾递归的优化
*/
def power1(x:Int,n:Int):Long={
if (n>1) x * power1(x,n-1)
else 1
}
//尾递归优化
@annotation.tailrec
def power(x:Int,n:Int,t:Int=1):Long={
if (n< 1) t
else power(x,n-1,x*t)
}
//嵌套函数:函数表达式,中依然包含函数
def max(a:Int,b:Int,c:Int) :Int={
def max(a:Int,b:Int)={
if(a>b) a else b
}
max(a,max(b,c))
}
//命名参数调用函数
def greet (prefix:String,name:String)=s"$prefix ,: $name"
greet("ms","bown")
println(greet(name = "andy", prefix = "ha"))
//有默认值的参数
def greet1 (prefix:String="你是帅哥",name:String)=s"$prefix ,: $name"
//类型参数 def <function-name>[type-name]:(parameter-name:<type-name>):<type-name> ...
def identity[A](a:A):A= a

过程(Process):没有返回值的函数

//process
def log(x:Double) = println(s"${x}")
//过程的另一种写法,已经废弃
def log1(x:Double) {println(s"${x}")}


标签:调用,name,Scala,Int,String,基本概念,def,函数
From: https://blog.51cto.com/snailGo/5729351

相关文章

  • T4 凹函数 整理
    MD凹函数题解题意是多组数据,给定\(n,m\),求定义域和值域分别为\([0,n],[0,m]\)的单调凹函数至多经过几个整点考虑相邻两个经过整点的差,原问题等价于选出k个二维向量\((......
  • 找出完全相同的行-函数
    问题:找出两个表中完全相同的行函数解决:{=FILTER(A2:C6,MMULT((A2:C6=E2:G6)*1,{1;1;1})=3)}MMult函数计算规则: 最后利用Filter函数筛选出MMult函数结果为3的行......
  • c/c++ 时间函数
    c语言相关函数#include<stdio.h>#include<time.h>voidtime_test_func(){time_tseconds;seconds=time(NULL);printf("从1970-01-0100:00:00到......
  • 从IDA实战看函数参数和局部变量在栈里分布的差异
    问题:IDAPro识别了在0x10001656处的子过程(函数)中的多少个局部变量? 当前版本的IDA,识别的是一个参数lpThreadParameter,以及62个参数局部参数通常以var_开头,偏移值为负值,......
  • Mysql function 自定义函数,查找子节点
    ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_......
  • 函数学习
    1.函数分为:库函数和自定义函数查找库函数的网站:http://www.cplusplus.com   或着​​https://legacy.cplusplus.com/reference/​​中文版的C语言函数网站:cpprefenrer......
  • React18 (六) hook钩子函数
    React中的钩子函数的功能非常的强大,而它的使用又十分简单。关于钩子函数的使用,我们只需记住两点:1.钩子只能在React组件和自定义钩子中使用2.钩子不能在嵌套函数或其他......
  • gym.ObservationWrapper使用时的注意点——reset和step函数可以覆盖observation函数
    记录一个刚学习到的gym使用的点,就是gym.ObservationWrapper使用时的注意点——reset和step函数可以覆盖observation函数。  给出代码:importgymclassWrapper(gym.Observa......
  • 函数进阶
    一、多函数程序执行流程(一)共用全局变量#定义全局变量num=0deftest1():globalnum#修改全局变量num=100deftest2():#调用test1函数中修......
  • 构造函数初始化列表的基本形式
    https://blog.csdn.net/m0_63783532/article/details/123833512?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-12383......