在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
答案 0 :(得分:3)
因为{ "foo" }
或{ foo() }
都不是字符串吗?
他们是Closure<String>
尝试:
class C {
Closure<String> foo = { "foo" }
Closure<String> bar = { foo() }
}
new C().bar()