1

次のグルーヴィーなクラスのようなものがあります:

class Foo {
   private Map<String,String> bar = [:]

   Map<String, String> getBar() {
       return bar.asImmutable()
   }

   def doSomething(List<String> argValues){
     argValues.each {
        bar[it] = it
     }
   }
}

doSomething メソッドは失敗するようです。各クロージャーでは、フィールドではなく、バー プロパティがアクセサーを通じて使用されているようです。だから不変です。

問題は、「クロージャー内でフィールド (アクセサーではなく) を使用するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

1

@次のようにプロパティ アクセサー演算子を使用できます。

this.@bar[ it ] = it 
于 2013-09-26T19:49:08.850 に答える