4

クロージャーが次のように定義されているクラスがあります。

void everyPixel( closure ){
    for( def x : 0..width-1 )
        for( def y : 0..height-1 )
            closure( x, y )
}

しかし、@CompileStaticアノテーションを適用すると、コンパイルされません(クロージャーを追加する前にコンパイルされました)。次のメッセージが表示されます。

Groovyc:[静的型チェック]-一致するメソッドjava.lang.Object#call(java.lang.Integer、java.lang.Integer)が見つかりません。宣言されたタイプが正しいかどうか、およびメソッドが存在するかどうかを確認してください。

静的にコンパイルされるように、この型アノテーションを作成するにはどうすればよいですか?これまでのGoogleでの私のヒットはすべて、クロージャを受け入れるメソッドを定義する方法ではなく、クロージャを渡す方法を示しています:-/

4

1 に答える 1

5

あなたはそれが:であると言う必要がclosureありClosureます

void everyPixel( Closure closure ){
  for( x in 0..<width )
    for( y in 0..<height )
      closure( x, y )
}
于 2013-03-15T09:36:35.433 に答える