是否有内置的 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.
我编写此方法是为了将 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.