Kotlin 使用Lambda來設(shè)置回調(diào)的操作
使用Kotlin的Lambda表達式,我們可以拋棄回調(diào)接口的使用。只需設(shè)置希望后面會被調(diào)用的函數(shù)即可。
示例如下
新建一個Kotlin類
class MyBean { fun testcallback1(callback: (String) -> Unit) { callback.invoke("這是回調(diào)的內(nèi)容") } fun testcallback2(value1: Int, value2: Int, callback: (Int, Int) -> Int): Int { var result = callback.invoke(value1, value2) return result * 3 } }
進行調(diào)用
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) var bean = MyBean() bean.testcallback1 { m -> toast(m) } val result = bean.testcallback2(1, 2, { value1, value2 -> value1 + value2 }) toast("計算結(jié)果" + result.toString()) } }
最后顯示的結(jié)果
testcallback1的toast顯示為: "這是回調(diào)的內(nèi)容"
testcallback2將value1和value2相加,最后再乘以3,故toast顯示為9
補充知識:kotlin 定義接口并實現(xiàn)回調(diào)
開發(fā)環(huán)境 android studio 3.0.1 已支持 kotlin
1、定義接口
interface CallBack{ fun callBack(info : String) }
2、實現(xiàn)接口 : 為繼承\(zhòng)實現(xiàn)
class CallBacks : CallBack{ override fun callBack(info : String){ Log.d("MainApp","current info $info") } }
或者
private var mCallBack = object : CallBack{ override fun callBack(info : String){ Log.d("MainApp","current info $info") } }
3、定義帶回調(diào)方法的函數(shù)
private fun initData(callBack : CallBack):Boolean{ callBack?.callBack("我來自回調(diào)") return true }
4、實現(xiàn)回調(diào),調(diào)用方式與實現(xiàn)接口對應(yīng)
initData(CallBacks())
或者
initData(mCallBack)
打印結(jié)果:
以上這篇Kotlin 使用Lambda來設(shè)置回調(diào)的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android中使用LayoutInflater要注意的一些坑
LayoutInflater類在我們?nèi)粘i_發(fā)中經(jīng)常會用到,最近在使用中就遇到了一些問題,所有下面這篇文章主要給大家總結(jié)了關(guān)于Android中使用LayoutInflater要注意的一些坑,希望通過這篇能讓大家避免走一些彎路,需要的朋友可以參考學(xué)習(xí),下面來一起看吧。2017-04-04Android中點擊按鈕啟動另一個Activity及Activity之間傳值問題
這篇文章主要介紹了Android中點擊按鈕啟動另一個Activity及Activity之間傳值問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01淺析Android企業(yè)級開發(fā)數(shù)據(jù)綁定技術(shù)
這篇文章通過代碼實例分析了Android企業(yè)級開發(fā)數(shù)據(jù)綁定技術(shù)的應(yīng)用以及相關(guān)的原理知識,跟著小編一起學(xué)習(xí)參考下吧。2017-12-12