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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容