为什么我在 GroovyConsole 中得到 MissingPropertyException?
Why do I get a MissingPropertyException in the GroovyConsole?
当我在 GroovyConsole 中执行以下脚本时,它给了我一个 MissingPropertyException
但我不明白为什么:
def a = 'A'
def b() {
println a
}
b()
抛出以下异常:
groovy.lang.MissingPropertyException: No such property:
a for class: ConsoleScript18
at ConsoleScript18.b(ConsoleScript18:3)
at ConsoleScript18.run(ConsoleScript18:5)
您需要添加 Field
注释才能使其正常工作:
import groovy.transform.Field
@Field
def a = 'A'
def b() {
println a
}
b()
其背后的原因是当你在函数外写任何东西而不在 groovy 中声明任何 class 它被移动到主函数。
因此变量 a
的范围仅限于函数 main()
,您正试图在相同 class 的另一个函数 b()
中访问该函数。但是由于 class 没有 属性 a
它抛出 MissingPropertyException
.
当我在 GroovyConsole 中执行以下脚本时,它给了我一个 MissingPropertyException
但我不明白为什么:
def a = 'A'
def b() {
println a
}
b()
抛出以下异常:
groovy.lang.MissingPropertyException: No such property:
a for class: ConsoleScript18
at ConsoleScript18.b(ConsoleScript18:3)
at ConsoleScript18.run(ConsoleScript18:5)
您需要添加 Field
注释才能使其正常工作:
import groovy.transform.Field
@Field
def a = 'A'
def b() {
println a
}
b()
其背后的原因是当你在函数外写任何东西而不在 groovy 中声明任何 class 它被移动到主函数。
因此变量 a
的范围仅限于函数 main()
,您正试图在相同 class 的另一个函数 b()
中访问该函数。但是由于 class 没有 属性 a
它抛出 MissingPropertyException
.