语法糖 apply、let、run、also、with
| 函数 | 是否是扩展函数 | 引用调用类 | 返回值 |
|---|---|---|---|
| with | 否 | 需要设置参数 | 最后一行为返回值 |
| run | 是 | 内部使用 this | 最后一行为返回值 |
| let | 是 | 内部使用 it | 返回当前类 |
| apply | 是 | 内部使用 this | 返回当前类 |
| alos | 是 | 内部使用 it | 最后一行为返回值 |
语法糖 ::
使用场景:
- 引用类的属性
- 引用类的方法
- 获取类的 Class 对象
- 引用构造函数
举个🌰:
class Data{
var age:Int = 0
var Name:String = ""
constructor(number:Int){...}
fun add(age:Int){...}
}
引用属性
var data = Data(1, "张三")
var dataRef = Data::age
dataRef.get(data)
// age = 1
dataRef.set(data, 11)
// age = 11
引用方法
val numbers = listOf(-1, 0, 1)
numbers.filter(::add)
获取 Class 对象
Intent页面跳转时
引用构造函数
fun add(kFunction2: (number: Int) -> Data) {
var data:Data = kFunction2(1)
}
fun callData(){
add(::Data)
}