1、let的用法
1.1、let函数适用的场景 场景一: 最常用的场景就是使用let函数处理需要针对一个可null的对象统一做判空处理。 场景二: 然后就是需要去明确一个变量所处特定的作用域范围内可以使用
// 使用Java
if( mVar != null ){
mVar.function1();
mVar.function2();
mVar.function3();
}
//使用kotlin
mVar?.let{
it.function1();
it.function2();
it.function3();
}
2、also用法
// 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(obj){
//TODO
}
3.4 例子
//kotlin
val person = Person("chenjk","27")
with(person){
println(""my name is $name, i am $age years old)
}
//java
Person person = new Person("chenjk","27")
System.out.println("my name is" + person.name + ",i am "+person.age )
4、run函数
结合let函数和with函数 即: 1、调用同一个对象的多个方法 / 属性时,可以省去对象名重复,直接调用方法名 / 属性即可 2、定义一个变量在特定作用域内 3、统一做判空处理
//kotlin
val people = People("cjk",25)
people?.run{
printlin("my name is $name,i am $age years old")
}
5、apply函数
5.1 作用&应用场景
与run函数类似,但区别在与返回值:
- run函数返回最后一行的值/表达式
- apply函数返回传入的对象本身
5.2 应用场景
对象实例初始化时需要对对象中的属性进行赋值&返回该对象
5.3 示例
//run
val people = People("cjk",25)
val result = people?.run{
println("my name is &name, I am &age years old")
999
}
//最终结果 = 返回999给变量result
//apply
val people = People("cjk",25)
val result = people?.apply{
println("my name is &name, I am &age years old")
999
}
//最终结果 = 返回一个people对象给变量result
|