本文介绍: / 作用1:使用it替代object对象去访问其公有的属性 & 方法it.todo()// 作用2:判断object为null的操作object?.let{//表示object不为null的条件下,才会去执行let函数体it.todo()// 注:返回值 = 最后一行 / return的表达式。
前言
在Kotlin
中,有一些用于扩展 & 方便开发者编码的内置函数,能大大提高开发者的开发效率。今天,我将主要讲解的是:
基础知识:接口回调中Lambda使用
在Kotlin中可使用Lambda函数简化一些不必要的嵌套接口回调方法
// Java接口回调
mVar.setEventListener(new ExamEventListener(){
public void onSuccess(Data data){
// ...
}
});
// 同等效果的Kotlin接口回调(无使用lambda表达式)
mVar.setEventListener(object: ExamEventListener{
public void onSuccess(Data data){
// ...
}
});
// Kotlin接口回调(使用lambda表达式,仅留下参数)
mVar.setEventListener({
data: Data ->
// ...
})
// 继续简化
// 简化1:借助kotlin的智能类型推导,忽略数据类型
mVar.setEventListener({
data ->
// ...
})
// 简化2:若参数无使用,可忽略
mVar.setEventListener({
// ...
})
// 简化3:若setEventListener函数最后一个参数是一个函数,可把括号的实现提到圆括号外
mVar.setEventListener(){
// ...
}
// 简化3:若setEventListener函数只有一个参数 & 无使用到,可省略圆括号
mVar.setEventListener{
// ...
}
下面,我将讲解Kotlin
里提供用于扩展 & 方便开发者编码的几个有用内置函数:let函数、also函数、with函数、 run函数、apply函数。
1. let函数
1.1 简介
1.2 使用方法
// 作用1:使用it替代object对象去访问其公有的属性 & 方法
object.let{
it.todo()
}
// 作用2:判断object为null的操作
object?.let{//表示object不为null的条件下,才会去执行let函数体
it.todo()
}
// 注:返回值 = 最后一行 / return的表达式
1.3 使用示例
// 使用Java
if( mVar != null ){
mVar.function1();
mVar.function2();
mVar.function3();
}
// 使用kotlin(无使用let函数)
mVar?.function1()
mVar?.function2()
mVar?.function3()
// 使用kotlin(使用let函数)
// 方便了统一判空的处理 & 确定了mVar变量的作用域
mVar?.let {
it.function1()
it.function2()
it.function3()
}
2. also函数
2.1 作用 & 应用场景
2.2 使用示例
// let函数
var result = mVar.let {
it.function1()
it.function2()
it.function3()
999
}
// 最终结果 = 返回999给变量result
// also函数
var result = mVar.also {
it.function1()
it.function2()
it.function3()
999
}
// 最终结果 = 返回一个mVar对象给变量result
3. with函数
3.1 作用
调用同一个对象的多个方法 / 属性时,可以省去对象名重复,直接调用方法名 / 属性即可
3.2 应用场景
3.3 使用方法
with(object){
// ...
}
// 返回值 = 函数块的最后一行 / return表达式
3.4 使用示例
// 此处要调用people的name 和 age属性
// kotlin
val people = People("carson", 25)
with(people) {
println("my name is $name, I am $age years old")
}
// Java
User peole = new People("carson", 25);
String var1 = "my name is " + peole.name + ", I am " + peole.age + " years old";
System.out.println(var1);
4. run函数
4.1 作用 & 应用场景
4.2 使用方法
object.run{
// ...
}
// 返回值 = 函数块的最后一行 / return表达式
4.3 使用示例
// 此处要调用people的name 和 age属性,且要判空
// kotlin
val people = People("carson", 25)
people?.run{
println("my name is $name, I am $age years old")
}
// Java
User peole = new People("carson", 25);
String var1 = "my name is " + peole.name + ", I am " + peole.age + " years old";
System.out.println(var1);
5. apply函数
5.1 作用 & 应用场景
5.2 应用场景
对象实例初始化时需要对对象中的属性进行赋值 & 返回该对象
5.3 使用示例
// run函数
val people = People("carson", 25)
val result = people?.run{
println("my name is $name, I am $age years old")
999
}
// 最终结果 = 返回999给变量result
// apply函数
val people = People("carson", 25)
val result = people?.apply{
println("my name is $name, I am $age years old")
999
}
// 最终结果 = 返回一个people对象给变量result
特别注意
上面都是判非空所做的行为,那如果需要是空的时候做操作呢?答案:在末尾接 ?:
str?.let {
// 非空时的行为
} ?: let {
// 为空时的操作
}
至此,关于Kotlin
里提供用于扩展 & 方便开发者编码的几个有用内置函数讲解完毕。
总结
原文地址:https://blog.csdn.net/xiaopangcame/article/details/134766679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_37224.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。