Apply
- 用this代表当前引用对象;
- 调用其方法时,this可省略;
- 一定有返回值,且返回值为当前对象
- 对象可判空
val data = DataCenter()
/**
* 特性
1. 用this代表当前引用对象;
2. 调用其方法时,this可省略;
3. 一定有返回值,且返回值为当前对象;
4. 对象可判空;
*/
data?.apply {
this.setUid("1111")
setUid("1111")
}.setUid("1111")
Let
- 用it代表当前引用对象;
- 调用其方法时,it不可省略;
- 函数最后一行为返回值,可有可无;
- 对象可判空;
val data = DataCenter()
/**
特性
1. 用it代表当前引用对象;
2. 调用其方法时,it不可省略;
3. 函数最后一行为返回值,可有可无;
4. 对象可判空;
*/
val value = data?.let {
it.setUid("1111")
// 不写则无返回结果
"返回结果"
}
Run
- 用this代表当前引用对象;
- 调用其方法时,this可省略;
- 函数最后一行为返回值,可有可无;
- 对象可判空;
val data = DataCenter()
/**
特性
1. 用it代表当前引用对象;
2. 调用其方法时,it不可省略;
3. 函数最后一行为返回值,可有可无;
4. 对象可判空;
*/
val value = data?.run {
this.setUid("1111")
setUid("1111")
// 不写则无返回结果
"返回结果"
}
With
- 用this代表当前引用对象;
- 调用其方法时,this可省略;
- 函数最后一行为返回值,可有可无;
- 对象不可判空;
val data = DataCenter()
/**
特性
1. 用it代表当前引用对象;
2. 调用其方法时,it不可省略;
3. 函数最后一行为返回值,可有可无;
4. 对象不可判空;
*/
val value = with(data) {
this.setUid("1111")
setUid("1111")
// 不写则无返回结果
"返回结果"
}
Also
- 用it代表当前引用对象;
- 调用其方法时,it不可省略;
- 一定有返回值,且返回值为当前对象;
- 对象可判空;
val data = DataCenter()
/**
特性
1. 用it代表当前引用对象;
2. 调用其方法时,it不可省略;
3. 一定有返回值,且返回值为当前对象;
4. 对象可判空;
*/
data?.also {
it.setUid("1111")
}.setUid("1111")
总结
|
apply |
let |
run |
with |
also |
函数体对象 |
this |
it |
this |
this |
it |
对象是否可省 |
可 |
不可 |
可 |
可 |
不可 |
返回值 |
当前对象 |
任何对象 |
任何对象 |
任何对象 |
当前对象 |
可否判空 |
可以 |
可以 |
可以 |
不可以 |
可以 |
网友评论