15. Lamda表达式
2017-11-14 本文已影响233人
厚土火焱
Lamda表达式写起来可以让代码很简单。
以两个数字求和为例
fun sum(args1: Int, args2: Int):Int {
return args1 + args2
}
val sum2 = {arg1: Int, arg2: Int -> arg1 + arg2}
上面的代码一个是普通的函数,一个是Lamda表达式。它们的调用方式是完全相同的。
sum(3, 5)
sum2(3, 5)
Lamda表达式也可以写成多行
val printhello = {
println("Hello")
}
调用方法如下
printhello()
再看 sum2 的花括号内,里面参数都有声明。其实,如果只有一个参数的话,这个参数声明都是可以省掉的。
在具体的语句中,使用 it 替代。
args.forEach{println(it)}
神奇的 Lamda 还可以更简化一下
args.forEach(::println)
上面 2 条语句的效果是一样的,都是打印出所有的参数来。然后我们利用 Lamda 的特点,给出了代码。
这个对应我们常见的代码是这样的
for (i in args){
println(i)
}
使用 Lamda 表达式的写法,我们还可以写成相近的代码
args.forEach ForEach@{
if (it == "i") return@ForEach
println(it)
}
你看,这样就方便在其中添加业务逻辑了。而 ForEach@ 是标签。在遍历中,当达到条件时,使用 return 跳出标签。
综上所述,我们知道
Lamda 表达式是匿名函数