返回 计算结果 返回 this
传 this T.run {} with(T) {} T.apply {}
传 it T.let {} T.also {}
import java.lang.StringBuilder

val msg: StringBuilder = StringBuilder()

一、T.run { this } : result

传 this (可省略)返回计算结果
val result = msg.run {
    append(111)
    append("23445")  // 最后一行省略 return,直接返回
}

二、with(T) { this } : result

传 this (可省略)返回计算结果
val result = with(msg) {
    append(11)
    append("aaaaa")
    this.append("1111111") // this 可以省略
    2 * 3  // result 的返回值
}

三、T.apply { this } : this

传 this 返回 this
val result = msg.apply {
    append(111)
    append("23445")
}

四、T.let { it } : result

传 it 返回 计算结果
	val result = msg.let {
    it.append(111)
    it.append("1111111")
}

五、T.also { it } : this

传 it 返回 this
val result = msg.also {
    it.append("1111")
    it.append("1111")
    it.append("1111")
    it.append("1111")
}
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐