Koltin-let apply also run with的比较

本文详细介绍了Kotlin中的五种扩展函数:run、let、apply、also和with的使用方法及区别。通过具体实例展示了每种函数如何在不同场景下应用,帮助读者更好地理解和掌握这些扩展函数的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、具体的扩展方法

public inline fun <T, R> T.run(block: T.() -> R): R = block()
public inline fun <T, R> T.let(block: (T) -> R): R = block(this)
public inline fun <T> T.apply(block: T.() -> Unit): T { block(); return this }
public inline fun <T> T.also(block: (T) -> Unit): T { block(this); return this }
public inline fun <T, R> with(receiver: T, block: T.() -> R): R = receiver.block()

解释:
run:
任意函数的扩展函数,该函数需要传入一个无参的匿名函数,假定对象O调用该方法,
二、调用
/为需要替换的部分

    fun letTest() {
        error { "------------------TEST LET/RUN/WITH/ALSO/APPLY MEHOD------------------" }
        var data = view.let/run/with/also/apply {
            error { "this->$this" }
            error { "it->$it" }/  error { "没有参数,无法输入it" }
            "reMode"
        }
        error { data }
    }

三、具体的值

 ------------------TEST RUN MEHOD------------------
 this->android.widget.TextView{6613a0d V.ED.... ......ID 0,0-0,0}
 没有参数,无法输入it
 reMode
 ------------------TEST LET MEHOD------------------
 this->com.xly.kotlinupdate.anko.LetApplyAlsoRunWithCompare@4e2b7d3
 it->android.widget.TextView{6613a0d V.ED.... ......ID 0,0-0,0}
 reMode
 ------------------TEST APPLY MEHOD------------------
 this->android.widget.TextView{6613a0d V.ED.... ......ID 0,0-0,0}
 没有参数,无法输入it
 android.widget.TextView{6613a0d V.ED.... ......ID 0,0-0,0}
 ------------------TEST ALSO MEHOD------------------
 this->com.xly.kotlinupdate.anko.LetApplyAlsoRunWithCompare@4e2b7d3
 it->android.widget.TextView{6613a0d V.ED.... ......ID 0,0-0,0}
 android.widget.TextView{6613a0d V.ED.... ......ID 0,0-0,0}
 ------------------TEST WITH MEHOD------------------
 this->android.widget.TextView{6613a0d V.ED.... ......ID 0,0-0,0}
 没有参数,无法输入it
 reMode

四、应用场景
4.1、with持有调用者对象,然后返回任意对象 默认未写返回值时,返回Unit)
4.2、run与with功能相同,当流式编程的时候(xxx.run{})可以考虑采用run
4.3、apply持有调用者对象,并强制返回该对象。当需要修改某个属性,并重新赋值给其他对象时可以考虑采用
4.4、also持有调用者所在类对象,并强制返回调用者对象
4.5、let 持有调用者所在类对象 ,返回任意对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值