首页 文章

Groovy闭包,def与类型返回值

提问于
浏览
2

在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()时它也会失败 . 为什么酒吧关闭没有 grab foo?

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

1 回答

  • 3

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

    他们是 Closure<String>

    尝试:

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

相关问题