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 |
對象是否可省 |
可 |
不可 |
可 |
可 |
不可 |
返回值 |
當前對象 |
任何對象 |
任何對象 |
任何對象 |
當前對象 |
可否判空 |
可以 |
可以 |
可以 |
不可以 |
可以 |