【问题标题】:Groovy closures, def vs typed return valueGroovy 闭包,def 与类型化的返回值
【发布时间】:2014-02-16 10:22:34
【问题描述】:

在 Groovy 控制台中,版本 2.2.1: 为什么会这样?

class C {
  def foo = { "foo" }
  def bar = { foo() }
}
new C().bar()

但这失败了?

class C {
  String foo = { "foo" }
  String bar = { foo() }
}    
new C().bar()

以上由 tim_yates 回答,但我有一些相关的东西似乎不值得为它创建一个新问题(不确定礼仪)。当我将它们设为静态时,当我调用 bar() 时它也会失败。为什么 bar 闭包不捕获 foo?

class C {
  static foo = { "foo" }
  static bar = { foo() }
}    
C.foo() //works
C.bar() //fails

【问题讨论】:

  • 我认为这应该是一个不同的问题
  • 谢谢,tim_yates。我发布了它here

标签: groovy closures


【解决方案1】:

因为{ "foo" }{ foo() } 都不是字符串?

他们是Closure<String>

试试:

class C {
  Closure<String> foo = { "foo" }
  Closure<String> bar = { foo() }
}    
new C().bar()

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 2014-08-09
    • 2015-08-18
    相关资源
    最近更新 更多