Kotlin小记:Lambda表达式函数文法
2017-06-19 本文已影响80人
萧延强
今天微信群里有童鞋不明白下面的代码
val lam = { x: Int, x2: (a: Int) -> Int -> x == x2.invoke(x - 1) }
val lam1 = lam(1, { x -> x - 3 })
println(lam1)
我觉得这种代码纯秀技术肌肉或者做做学习实验倒是可以,但在团队开发里,除非成员整体水平都能快速读懂这种代码,否则不建议这样写。
其实这段代码不是特别难读,主要是Lambda表达式函数文法(我好像翻译得怪怪的)
参考官方文档lambda-expression-syntax
只要把上面的代码拆解一下就好懂了(为了更容易理解,这里就不用单表达式函数来写)
// 这就是lam函数
fun lam(x: Int, x2: (a: Int) -> Int): Boolean {
return x == x2.invoke(x - 1)
}
// 这就是 { x -> x - 3 } 函数定义
val funDef = fun(a: Int): Int {
return a - 3;
}
val lam1 = lam(1, funDef)
println(lam1)
Kotlin很灵活,语法糖也很多,滥用有时候会影响阅读。
无论工具如何进化,人技术素养才是关键。