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对象
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容