在Kotlin,有apply
method:
inline fun <T> T.apply(block: T.() -> Unit): T (source)
以
this
值作为接收方,调用指定的函数block并返回this
值。
这允许您配置如下对象:
val myObject = MyObject().apply {
someProperty = "this value"
myMethod()
}
{p> myObject
将是MyObject
来电之后的apply {}
。
Groovy有with
method,类似于:
public static <T,U> T with(U self, @DelegatesTo(value=DelegatesTo.Target.class,target="self",strategy=1) Closure<T> closure )
允许为对象引用self调用闭包。
...
来自doc的一个例子:
def b = new StringBuilder().with {
append('foo')
append('bar')
return it
}
assert b.toString() == 'foobar'
使用Groovy方法的部分总是必须使用return it
来返回with
调用的委托,这会使代码更加冗长。
是否有与Groovy中的Kotlin apply
等效的内容?
答案 0 :(得分:4)
该函数名为tap
,是Groovy 2.5的一部分。请参阅merge request中有关命名的讨论。
除此之外,只能使用foo.with{ bar=baz; it }
。您可以通过元编程改造自己的doto
,tap
,apply
,...