内置'与'返回

时间:2017-12-28 19:07:25

标签: groovy

在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等效的内容?

1 个答案:

答案 0 :(得分:4)

该函数名为tap,是Groovy 2.5的一部分。请参阅merge request中有关命名的讨论。

除此之外,只能使用foo.with{ bar=baz; it }。您可以通过元编程改造自己的dototapapply,...