是否有内置的 Kotlin 方法将 void 函数应用于值?

Is there a built in Kotlin method to apply void function to value?

我编写此方法是为了将 void 函数应用于一个值和 return 该值。

public inline fun <T> T.apply(f: (T) -> Unit): T {
    f(this)
    return this
}

这对于减少这样的事情很有用:

return values.map {
    var other = it.toOther()
    doStuff(other)
    return other
}

像这样:

return values.map { it.toOther().apply({ doStuff(it) }) }

Kotlin 中是否已经内置了类似这样的语言功能或方法?

我运行陷入同样的​​问题。我的解决方案与您的解决方案基本相同,但有一点改进:

inline fun <T> T.apply(f: T.() -> Any): T {
    this.f()
    return this
}

请注意,f 是一个扩展函数。这样您就可以使用隐式 this 引用在您的对象上调用方法。这是从我的 libGDX 项目中获取的示例:

val sprite : Sprite = atlas.createSprite("foo") apply {
    setSize(SIZE, SIZE)
    setOrigin(SIZE / 2, SIZE / 2)
}

当然你也可以调用doStuff(this).

Apply 在 Kotlin 标准库中:请参阅此处的文档:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html

其方法签名:

inline fun <T> T.apply(f: T.() -> Unit): T (source)

Calls the specified function f with this value as its receiver and returns this value.