kotlin基础之let、also、with、run、apply

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

你可能感兴趣的:(kotlin)