scala学习笔记4--scala的函数一
默认值:
def sayMyName(name : String = "Jack"){ println(name) }
可变参数:
def sumMoreParameters(elem : Int*) = { var sum = 0 for(e <- elem){ println(e) sum += e } sum }
下划线的使用:
def add(a:Int,b:Int) = a+b def add2 = add(_:Int,2)
递归函数:需要显式的给予函数的返回类型
def fac(n:Int):Int = if( n <= 0) 1 else n*fac(n-1)
函数柯里化:
把这个参数一个个独立开来写,这就是柯里化
def mulitply(x:Int)(y:Int) = x*y def m2 = mulitply(2)_;
柯里化就是把参数可以分开来,把部分函数参数可以用下划线来代替
匿名函数声明方式
val t = ()=>333
:后面是数据类型,c代表传进来的参数
def testfunc02(c : ()=>Int ){ println(c()) 1000 }
匿名函数
val d1 = (a:Int)=> a+100;
匿名函数作为参数,其实就是参数名,后面跟上参数类型,然后是表达式
def testf1(callback : (Int,Int)=>Int )={ println(callback(123,123)); }
嵌套函数,其实就是def里面套一个def
def add3(x:Int, y:Int ,z:Int) : Int = { def add2(x:Int, y:Int):Int = { x + y } add2(add2(x,y),z) }
def sum(f : Int => Int) : (Int , Int) => Int = { def sumF(a : Int , b : Int) : Int = if (a >b ) 0 else f(a) + sumF( a + 1 , b) sumF }