kotlin 多介面回撥的實現方式(一)
阿新 • • 發佈:2019-01-29
沒啥好說的,看標題就明白了。程式碼比較繞,慢慢看….
本來想解釋下程式碼,不過可能還在受上一篇帖子的影響吧,不知道說些什麼…
有不明白的留言吧…
可以先把程式碼複製一份到電腦上執行一下,先看看效果
package com.example.kotlinapplication
import org.junit.Test
/** 多介面回撥的程式碼測試 */
typealias Fun1 = (String) -> Unit
typealias Fun2 = (String,String) -> Unit
typealias Fun3 = (Fun1)->Unit
typealias Fun4 = (Fun2)->Unit
typealias CallBack = (Fun3,Fun4) -> Unit
class MultiCallBack{
lateinit var newCall:CallBack
//用於實現介面回撥的方法
fun callBack(call: CallBack){
newCall = call
println("callBack呼叫")
}
var mFun:Fun1? = null
//第一次賦值
fun setCallBack(){
println("setCallBack呼叫" )
val fun1:Fun3 = {
mFun = it
}
val fun2:Fun4 = {
it("2","3")
}
newCall(fun1,fun2)
}
//第二次賦值
fun setCallBack2(){
println("呼叫setCallBack2")
mFun?.invoke("重新複製")
}
//測試程式碼
@Test
fun callBackTestMain(){
callBack{ fun0,fun1 ->
fun0{
println("fun0讀取的內容:$it")
}
fun1{ value1,value2 ->
println("fun1讀取的內容:value1-->${value1}和value2---->${value2}")
}
}
setCallBack()
setCallBack2()
}
}
**執行結果:**
callBack呼叫
setCallBack呼叫
fun1讀取的內容:value1-->2和value2---->3
呼叫setCallBack2
fun0讀取的內容:重新複製