是否有一个内置的Kotlin方法来将void函数应用于值?
我写了这个方法来将一个void函数应用到一个值并返回值。
public inline fun 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) }) }
有没有这样的语言function或方法已经建立到Kotlin?
我遇到了同样的问题。 我的解决方案基本上和你的小解决方案一样:
inline fun T.apply(f: T.() -> Any): T { this.f() return this }
请注意,这是一个扩展function。 这样你可以使用隐式的引用来调用你的对象的方法。 以下是我的一个libGDX项目的例子:
val sprite : Sprite = atlas.createSprite("foo") apply { setSize(SIZE, SIZE) setOrigin(SIZE / 2, SIZE / 2) }
当然,你也可以调用doStuff(this)
。
应用程序在Kotlin标准库中:请参阅文档: https : //kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html
其方法签名:
inline fun T.apply(f: T.() -> Unit): T (source)
用这个值作为接收者调用指定函数f并返回这个值。