I wrote this method to apply a void function to a value and return the value.
public inline fun T.apply(f: (T) -> Unit): T {
f(this)
ret
I ran into the same problem. My solution is basicly the same as yours with a small refinement:
inline fun T.apply(f: T.() -> Any): T {
this.f()
return this
}
Note, that f
is an extension function. This way you can invoke methods on your object using the implicit this
reference. Here's an example taken from a libGDX project of mine:
val sprite : Sprite = atlas.createSprite("foo") apply {
setSize(SIZE, SIZE)
setOrigin(SIZE / 2, SIZE / 2)
}
Of course you could also call doStuff(this)
.