编程技术文章分享与教程

网站首页 > 技术文章 正文

kotlin中标准函数apply的使用(kotlin t.())

hmc789 2024-11-16 20:55:56 技术文章 2 ℃

#文章首发挑战赛#

在Standart.kt中定义

@kotlin.internal.InlineOnly
public inline fun <T> T.apply(block: T.() -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block()
    return this
}

调用apply函数的对象类型是泛型,说明任何对象都可以调用该方法。

返回对象是调用apply函数的对象本身, 在代码块中可以使用this访问其调用对象。

理解T.()->Unit

T.()->Unit 的函数体中可以直接使用T代表的对象,使用关键字this。相当于是给类T定义了一个扩展函数,该函数没有形参,没有返回值。也是因为T.()为T的扩展函数,所以可以在函数体里直接访问T对象的属性或者成员函数。

示例:

fun main(){

    var info = "HELLO,World"

    var result: String = info.apply {
        println("之前结果是:$this")
        var lower = this.toLowerCase()
        println("之后结果是:$lower")
    }

    // 打印的值仍然是info最初的信息
    println("调用apply函数之后的值是:$result")
}
/*
输出
之前结果是:HELLO,World
之后结果是:hello,world
调用apply函数之后的值是:HELLO,World*/
标签列表
最新留言