问题
第一种
val funLit2 = { s: String ->
val d1 = s
println(d1)
}
第二种
val funLit = fun String.() {
val d = this
println(d)
}
结论
第一种情况: Lambda 表达式语法,即一个未声明的函数, 做为表达式传递
如果我们把所有可选标注都留下,看起来如下:
val funLit2:(String)->Unit ={
s: String -> val d = s
print(d)
}
非Lambda 表达式写法:
fun funLit2(s:String): Unit {
val d = s
print(d)
}
省略Unit
fun funLit2(s:String) {
val d = s
print(d)
}
第二种情况:
带接收者的函数字面值 类似于扩展函数
其实文档上都有介绍过这种情况,但是那章节特别长我就草草略过了。。。但是不可否认的一点是kotlin的多种写法导致了可读性的降低