Mic*_*ael 3 groovy groovy-console
当我在GroovyConsole中执行以下脚本时,它给了我一个,MissingPropertyException但我不明白为什么:
def a = 'A'
def b() {
println a
}
b()
Run Code Online (Sandbox Code Playgroud)
抛出以下异常:
groovy.lang.MissingPropertyException: No such property:
a for class: ConsoleScript18
at ConsoleScript18.b(ConsoleScript18:3)
at ConsoleScript18.run(ConsoleScript18:5)
Run Code Online (Sandbox Code Playgroud)
小智 10
这背后的原因是当你在函数之外写任何东西而没有在groovy中声明任何类时它会被移动到main函数.
因此,变量的范围a仅限于main()您尝试在b()同一类的另一个函数中访问的函数.但由于没有a上课的财产,它会抛出MissingPropertyException.
您需要添加Field注释才能使其工作:
import groovy.transform.Field
@Field
def a = 'A'
def b() {
println a
}
b()
Run Code Online (Sandbox Code Playgroud)