Kotlin中的接口回调
java的接口回調(diào)相信大家都用的相當(dāng)熟練。不過(guò)轉(zhuǎn)戰(zhàn)到Kotlin該怎么寫(xiě)接口回調(diào)?
本文你會(huì)學(xué)到單參數(shù)回調(diào),多參數(shù)回調(diào)的寫(xiě)法,直接上代碼;
上面的邏輯就是Test需要一個(gè)計(jì)算結(jié)果來(lái)自于MathUtils,而Test不關(guān)心計(jì)算的過(guò)程,只需要這個(gè)計(jì)算的結(jié)果。我們很自然的就是想到了接口回調(diào)。
我們一句句理解這句話
private lateinit var listen: ((Int) -> Unit)這里的lateinit就是稍后初始化 listen變量的屬性是 ((Int) -> Unit)
意思就是listen是個(gè)函數(shù)類型變量 入?yún)⑹菃螀?shù)Int類型,無(wú)返回值
看這里
fun getResult() {
println("經(jīng)過(guò)一系列耗時(shí)運(yùn)算獲得結(jié)果")
var sum = 200
listen.invoke(sum)
}
其中l(wèi)isten.invoke(sum)就是將計(jì)算結(jié)果sum傳入listen函數(shù)
在activity中設(shè)置傳入一個(gè)((Int) -> Unit類型的函數(shù)就可以監(jiān)聽(tīng)到計(jì)算結(jié)果
mathUtlils.setListen {println("計(jì)算的結(jié)果 $it")}那么多參數(shù)回調(diào)怎么寫(xiě)?
private lateinit var saveListen: ((Boolean, File) -> Unit)fun setListen(saveListen: ((Boolean, File) -> Unit)) {this.saveListen = saveListen} ImageSaver.setListen { boolean, file ->}看懂了吧,在括號(hào)中增加想要的參數(shù)類型即可。 熟能生巧,敲起來(lái)就明白是怎么一回事啦。 Kotlin的回調(diào)運(yùn)用的就是函數(shù)思維模式,慢慢習(xí)慣他,代碼會(huì)更加的簡(jiǎn)潔優(yōu)雅。
總結(jié)
以上是生活随笔為你收集整理的Kotlin中的接口回调的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DialogFragment 全屏显示
- 下一篇: DP PX转换