1
有人可以請解釋爲什麼qux失敗的調用?它似乎沒有捕獲靜態關閉變量foo創建時的名稱。如果我故意將名稱分配給一個變量,如baz它可以工作,或者如果我通過該類調用它。我認爲這個變量捕獲應該也適用於閉包類變量,但是我必須缺少一些東西。Groovy關閉不捕獲靜態關閉變量
class C {
static foo = { "foo" }
static bar = { C.foo() }
static baz = { def f = foo; f() }
static qux = { foo() }
}
println C.foo() //works
println C.bar() //works
println C.baz() //works
println C.qux() //fails
我也試過這個作爲測試和它沒有問題捕獲我變量:
class C {
static i = 3
static times3 = { "foo: ${it * i}" }
}
println C.times3(2) //works
[編輯] 最後,如果FOO是一個簡單的方法,它也按我期望的方式工作:
class C {
static foo() { "foo" }
static bar = { foo() }
}
println C.bar() //works
很好找到那裏的錯誤數據庫!我同意這聽起來正是這個問題。看起來它已經存在了一段時間了。 – jrk
計劃固定在groovy 3.與特點和新的澳門幣,我認爲V3會搖滾。 – Will