Groovy闭包,def与类型返回值

时间:2014-02-16 10:22:35

标签: groovy closures

在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()时它也会失败。为什么酒吧关闭不能捕获foo?

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

1 个答案:

答案 0 :(得分:3)

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

他们是Closure<String>

尝试:

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