是否有一个内置的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并返回这个值。