4

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)
4

2 に答える 2

11

その背後にある理由は、groovy でクラスを宣言せずに関数の外部に何かを記述すると、メイン関数に移動されるためです。

したがって、変数のスコープは、同じクラスの別の関数でアクセスしようとしているa関数に限定されます。しかし、クラスのプロパティがないため、スローされます。main()b()aMissingPropertyException

于 2015-08-26T09:25:12.587 に答える
7

Field機能させるには、注釈を追加する必要があります。

import groovy.transform.Field

@Field
def a = 'A'
def b() {
    println a
}
b()
于 2015-08-26T08:18:45.350 に答える