1. 程式人生 > >kotlin 多介面回撥的實現方式(一)

kotlin 多介面回撥的實現方式(一)

沒啥好說的,看標題就明白了。程式碼比較繞,慢慢看….
本來想解釋下程式碼,不過可能還在受上一篇帖子的影響吧,不知道說些什麼…
有不明白的留言吧…
可以先把程式碼複製一份到電腦上執行一下,先看看效果

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讀取的內容:重新複製