1、let:
var result = object.let{
it.todo()
1000
}
- let的函数体内用it代表该对象
- 可以判空:object?.let{}
- 返回函数体最后一行的值:result = 1000
2、with:
var result = with(object){
todo()
1000
}
- whit的函数体内用this代表该对象(可省略this)
- 本体是with(object,{})
- 返回函数体最后一行的值:result = 1000
3、run:
var result = object.run{
todo()
1000
}
- let和with的结合体
- 可以判空:object?.run{}
- 返回函数体最后一行的值:result = 1000
4、apply:
var result = object.apply{
todo()
1000
}
- 与run一样,唯一不同的是返回值,如下
- 函数体返回对象本身:result = object
5、also:
var result = object.also{
it.todo()
1000
}
- 与let一样,唯一不同的是返回值,如下
- 函数体返回对象本身:result = object
总结:一般只用apply和run就够了(apply可代替let、with,run可代替also)。
参考:https://blog.csdn.net/u013064109/article/details/78786646