Kotlin 类似于 Groovy 中的作用域函数(let、also、apply、run)

Rom*_*sov 3 groovy kotlin

我认为标题本身就说明了问题 - Groovy 是否有类似 Kotlin 作用域函数的东西?

obj.apply {
  foo()
  bar()
  baz()
}

// is the same as
obj.foo()
obj.bar()
obj.baz()
Run Code Online (Sandbox Code Playgroud)

Szy*_*iak 8

Groovy 有obj.with { }方法可以让你做同样的事情:

obj.with {
  foo()
  bar()
  baz()
}
Run Code Online (Sandbox Code Playgroud)

还有obj.tap { }一个变体(相当于obj.with(true) { })可以执行相同的操作,但它返回传入的对象。

def newObj = obj.tap {
  foo()
  bar()
  baz()
}
Run Code Online (Sandbox Code Playgroud)

来源:http ://docs.groovy-lang.org/docs/next/html/documentation/style-guide.html#_using_with_and_tap_for_repeated_operations_on_the_same_bean

  • Groovy `with` 就像 Kotlin `run`,Groovy `tap` 就像 Kotlin `apply`。 (3认同)