Kotlin各函数使用

参考自 Kotlin系列之let、with、run、apply、also函数的使用 个人简略总结

一、lambda回调函数

用于只有一个回调方法的接口

mView.setOnClickListener{
    //todo
}

二、作用域函数let

用于判断变量非空后的作用域使用,返回值为最后一行

privat var intent:Intent?=null

val value:String? = intent?.let{
      it.putExtra("key1","value")
      it.putExtra("key2","value")
      getStringExtra("key")
}

三、作用域函数with

用于调用同个类的多个方法免去类名直接调用

with(intent){
      getStringExtra("key",value)
      putExtra("key1","value")
}

四、作用域函数run

let和with的混合体

privat var intent:Intent?=null

intent?.run{
      getStringExtra("key",value)
      putExtra("key1","value")
}

五、作用域函数apply

用于返回需要对象实例初始化的对象本身,函数块内免去类名直接调用
同时用于多层级判断非空操作

//用于返回需要对象实例初始化的对象本身
val intent = Intent().apply{
      putExtra("key1","value")
      putExtra("key2","value")
}

//用于多层级判断非空操作
carBean?.apply{
// carBean不为空时操作carBean
}.engine?.apply{
// engine不为空时操作engine
}.valve?.apply{
// valve不为空时操作valve
}

六、作用域函数also

和let相同,区别在于返回值为当前对象,用于多个扩展函数链式调用

carBean.also{
    engine = Engine().apply{
          valve = "valve version"
    }
}.engine.also{
// 对valve进行操作,并返回engine对象
}

你可能感兴趣的:(Kotlin各函数使用)