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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。