默认值:
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
}
原文:http://www.cnblogs.com/dongdone/p/5741998.html