Kotlin 使用Lambda來(lái)設(shè)置回調(diào)的操作
使用Kotlin的Lambda表達(dá)式,我們可以拋棄回調(diào)接口的使用。只需設(shè)置希望后面會(huì)被調(diào)用的函數(shù)即可。
示例如下
新建一個(gè)Kotlin類(lèi)
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 } }
進(jìn)行調(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("計(jì)算結(jié)果" + result.toString()) } }
最后顯示的結(jié)果
testcallback1的toast顯示為: "這是回調(diào)的內(nèi)容"
testcallback2將value1和value2相加,最后再乘以3,故toast顯示為9
補(bǔ)充知識(shí):kotlin 定義接口并實(shí)現(xiàn)回調(diào)
開(kāi)發(fā)環(huán)境 android studio 3.0.1 已支持 kotlin
1、定義接口
interface CallBack{ fun callBack(info : String) }
2、實(shí)現(xiàn)接口 : 為繼承\(zhòng)實(shí)現(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("我來(lái)自回調(diào)") return true }
4、實(shí)現(xiàn)回調(diào),調(diào)用方式與實(shí)現(xiàn)接口對(duì)應(yīng)
initData(CallBacks())
或者
initData(mCallBack)
打印結(jié)果:
以上這篇Kotlin 使用Lambda來(lái)設(shè)置回調(diào)的操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- kotlin實(shí)戰(zhàn)教程之lambda編程
- Kotlin基礎(chǔ)學(xué)習(xí)之lambda中return語(yǔ)句詳解
- 玩轉(zhuǎn)Kotlin 徹底弄懂Lambda和高階函數(shù)
- 詳解Kotlin 高階函數(shù) 與 Lambda 表達(dá)式
- java協(xié)程框架quasar和kotlin中的協(xié)程對(duì)比分析
- Kotlin與Java的區(qū)別詳解
- Kotlin 和 Java 混合開(kāi)發(fā)入門(mén)教程
- Java與kotlin詳細(xì)對(duì)比
- Java 和 Kotlin Lambda 表達(dá)式示例詳解
相關(guān)文章
Android實(shí)現(xiàn)簡(jiǎn)單QQ登錄頁(yè)面
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)單QQ登錄頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Android編程實(shí)現(xiàn)等比例顯示圖片的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)等比例顯示圖片的方法,實(shí)例分析了Android等比例縮放圖片的具體步驟與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Android中使用LayoutInflater要注意的一些坑
LayoutInflater類(lèi)在我們?nèi)粘i_(kāi)發(fā)中經(jīng)常會(huì)用到,最近在使用中就遇到了一些問(wèn)題,所有下面這篇文章主要給大家總結(jié)了關(guān)于Android中使用LayoutInflater要注意的一些坑,希望通過(guò)這篇能讓大家避免走一些彎路,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看吧。2017-04-04Android中點(diǎn)擊按鈕啟動(dòng)另一個(gè)Activity及Activity之間傳值問(wèn)題
這篇文章主要介紹了Android中點(diǎn)擊按鈕啟動(dòng)另一個(gè)Activity及Activity之間傳值問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01Android開(kāi)發(fā)中的9個(gè)常見(jiàn)錯(cuò)誤和解決方法
這篇文章主要介紹了Android開(kāi)發(fā)中的9個(gè)常見(jiàn)錯(cuò)誤和解決方法,這是Android開(kāi)發(fā)中最常見(jiàn)的9個(gè)錯(cuò)誤,經(jīng)過(guò)各種各樣的整理,以及和熱心網(wǎng)友討論總結(jié)而來(lái),需要的朋友可以參考下2015-01-01淺析Android企業(yè)級(jí)開(kāi)發(fā)數(shù)據(jù)綁定技術(shù)
這篇文章通過(guò)代碼實(shí)例分析了Android企業(yè)級(jí)開(kāi)發(fā)數(shù)據(jù)綁定技術(shù)的應(yīng)用以及相關(guān)的原理知識(shí),跟著小編一起學(xué)習(xí)參考下吧。2017-12-12android自定義Camera實(shí)現(xiàn)錄像和拍照
這篇文章主要為大家詳細(xì)介紹了android自定義Camera實(shí)現(xiàn)錄像和拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05