Kotlin混淆

问题

第一种

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的多种写法导致了可读性的降低

你可能感兴趣的:(Kotlin混淆)