1.作为值的函数
在Scala中,函数是头等公民,就和数一样,可以在变量中存放函数。
在Scala中,有一个约定,就是将函数赋值给变量时,必须在函数后面加上空格和下划线。
def funcOps1(): Unit = {
def sayBye(name:String): Unit = {
println("say bye bye to " + name)
}
val sayGoodBye = sayBye _
def sgb = sayBye _
sayGoodBye("oldli")
sgb("oldli")
}
say bye bye to oldli
say bye bye to oldli
2.匿名函数
没有名字的函数,就是匿名函数,将参数列表和函数体使用"=>"连接起来,其作用是对参数列表中的参数,基于函数体进行操作,并类型推断其返回值。
def funcOps2(): Unit = {
val sgb = (name:String) => {
println("say bye bye to " + name)
}
sgb("韦启蒙")
}
3.带函数参数的函数(高阶函数)
def funcOps3(): Unit = {
def sayHi(name:String, func: (String) => Unit): Unit = {
func(name)
}
sayHi("李迪", (name:String) => {
println("say Hi to " + name)
})
sayHi("李迪", name => func(name))
}