2015-08-26 72 views
3

当我在groovyConsole中执行以下脚本它给了我一个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) 

回答

6

您需要添加一个Field注解使其工作:

import groovy.transform.Field 

@Field 
def a = 'A' 
def b() { 
    println a 
} 
b() 
10

这背后的原因是当你写func以外的任何东西没有声明任何类在groovy它被移动到主要功能。

因此,变量a的范围限于功能main(),您试图在同一类的另一个功能b()中访问。但因为没有财产a为它抛出MissingPropertyException

相关问题