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