問(wèn)題
第一種
val funLit2 = { s: String ->
val d1 = s
println(d1)
}
第二種
val funLit = fun String.() {
val d = this
println(d)
}
結(jié)論
第一種情況: Lambda 表達(dá)式語(yǔ)法裁替,即一個(gè)未聲明的函數(shù)粘衬, 做為表達(dá)式傳遞
如果我們把所有可選標(biāo)注都留下荞估,看起來(lái)如下:
val funLit2:(String)->Unit ={
s: String -> val d = s
print(d)
}
非Lambda 表達(dá)式寫法:
fun funLit2(s:String): Unit {
val d = s
print(d)
}
省略Unit
fun funLit2(s:String) {
val d = s
print(d)
}
第二種情況:
帶接收者的函數(shù)字面值 類似于擴(kuò)展函數(shù)
其實(shí)文檔上都有介紹過(guò)這種情況,但是那章節(jié)特別長(zhǎng)我就草草略過(guò)了稚新。勘伺。。但是不可否認(rèn)的一點(diǎn)是kotlin的多種寫法導(dǎo)致了可讀性的降低