0

いくつかの奇妙な振る舞い:ロガーはクロージャーでは利用できませんここで何が起こっているのですか?

Logger logger = Logger.getLogger("groovy.my.foo");

def printParameters() {
    if(logger.isDebugEnabled())
        logger.debug("print parameters")

    binding.variables.each { key, value ->
        logger.debug("Name=$key value= $value");
    }
} 

ロガーが提供された場合にのみ機能します

 def printParameters(Logger logger)  

パラメータに問題はありません....ありがとう

4

1 に答える 1

2

Groovyスクリプト内の変数のスコープは。タイプを使用する場合、またはタイプdefがローカル変数として定義されており、メソッド内でアクセスできない場合。型なしで変数を宣言する場合、または変数defがスクリプトのバインディングに追加され、他のメソッドで使用できる場合。

次に例を示します。

test = 'output'

printParameters()

def printParameters() {
    binding.variables.each { key, value ->
        println "$test: key=$key, value=$value"
    }
} 

logger = Logger.getLogger("groovy.my.foo")あなたの場合、問題を解決するためにロガーインスタンスを定義します。

于 2012-08-23T15:35:51.383 に答える