object y {
def main(args: Array[String]): Unit = {
val fun = (name:String) => { println(name) }
fun("at")
println("=====================================")
//定义一个函数,以函数作为参数输入
def f(func: String => Unit):Unit = {
func("at")
}
f(fun)
f((name:String) => { println(name) })
println("=====================================")
//匿名函数的简化原则
//参数的类型可以省略,会根据形参进行自动的推导
f { (name) => {
println(name)
}
}
//省略类型之后,发现只有一个参数,则圆括号可以省略
f(name => {
println(name)
})
//匿名函数如果只有一行,则大括号可以省略
f (name => println(name) )
//如果参数后面只出现一次,则省略且后面参数用_表示
f(println(_) )
//如果可以推断出,当前传入的println是一个函数体,而不是调用语句,可以直接省略下划线
f( println )
}
}