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
}

 

posted @ 2016-08-05 16:49  dongdone  阅读(208)  评论(0编辑  收藏  举报