1.函数定义
2.函数简化原则
1)如果返回值可以一行搞定,可以将{}省略不写
2)可以不写return,会把方法中最后一行当做结果返回。
3)返回值的类型也可以不写,会自动推断
object test02 {
def main(args: Array[String]): Unit = {
def sum(x:Int,y:Int)= x+y
println(sum(1,2))
}
}
3.递归算法
递归时一定要定义方法的返回值类型
4.可变长参数
表示是指定类型的参数,但是个数不固定
object test03 {
def main(args: Array[String]): Unit = {
def fun(i:String*):Unit={
println(i)
}
fun("hello","1","2")
}
}
5.匿名函数
=>就是匿名函数,多用于方法的参数是函数时,常用匿名函数
/**
* (Int,Int)=>Int可以不加,表示我们定义的函数入参是两个Int,返回值是Int
* (a:Int,b:Int)=>{a+b} 是一个匿名函数,
**/
def fun:(Int,Int)=>Int=(a:Int,b:Int)=>{a+b}
//简化后:
def fun=(a:Int,b:Int)=>a+b
6.高阶函数
1)函数可以作为值进行传递
2)函数可以作为参数进行传递
3)函数可以作为函数返回值返回
7.闭包
如果一个函数,访问到了它的外部(局部)变量的值,叫做闭包
object test03 {
def main(args: Array[String]): Unit = {
val y=20
val add=(x:Int)=>{
x+y
}
}
}
8.柯里化
将一个参数列表分成多个参数,并且分层传入
object test03 {
def main(args: Array[String]): Unit = {
def f(a:Int)(b:Int):Int={
a+b
}
println(f(1)(2))
}
}