Kotlin 使用Lambda来设置回调的操作
使用Kotlin的Lambda表达式,我们可以抛弃回调接口的使用。只需设置希望后面会被调用的函数即可。
示例如下
新建一个Kotlin类
classMyBean{ funtestcallback1(callback:(String)->Unit){ callback.invoke("这是回调的内容") } funtestcallback2(value1:Int,value2:Int,callback:(Int,Int)->Int):Int{ varresult=callback.invoke(value1,value2) returnresult*3 } }
进行调用
classMainActivity:AppCompatActivity(){ overridefunonCreate(savedInstanceState:Bundle?){ super.onCreate(savedInstanceState) varbean=MyBean() bean.testcallback1{m->toast(m)} valresult=bean.testcallback2(1,2,{value1,value2->value1+value2}) toast("计算结果"+result.toString()) } }
最后显示的结果
testcallback1的toast显示为:"这是回调的内容"
testcallback2将value1和value2相加,最后再乘以3,故toast显示为9
补充知识:kotlin定义接口并实现回调
开发环境androidstudio3.0.1已支持kotlin
1、定义接口
interfaceCallBack{ funcallBack(info:String) }
2、实现接口:为继承\实现
classCallBacks:CallBack{ overridefuncallBack(info:String){ Log.d("MainApp","currentinfo$info") } }
或者
privatevarmCallBack=object:CallBack{ overridefuncallBack(info:String){ Log.d("MainApp","currentinfo$info") } }
3、定义带回调方法的函数
privatefuninitData(callBack:CallBack):Boolean{ callBack?.callBack("我来自回调") returntrue }
4、实现回调,调用方式与实现接口对应
initData(CallBacks())
或者
initData(mCallBack)
打印结果:
以上这篇Kotlin使用Lambda来设置回调的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。