2

fileAsStringクラスにメソッドを追加するために切り取られた次のGroovyコードStringで、誰かが「これ」が正確に何を指しているのか説明できますか? メソッドが呼び出されるオブジェクトだと思っていましたが、fileAsString実際にはデリゲートが参照しているようです。

String.metaClass.fileAsString = {
    this.class.getResourceAsStream(delegate).getText()
}

ありがとう、ドン

4

1 に答える 1

2

新しく定義されたメソッドはクロージャーなので、'this' はメソッドが定義されたときと同じ意味になります。通常、「this」は、以下のようにメソッドを定義したオブジェクトを参照します。

class Foo {
    def meta() {
        String.metaClass.bar = {
            println(this.class)   // 'this' refers to the instance of Foo
        }
    }

    def main() {
        meta()
        new String().bar()
    }
}
new Foo().main()                  // prints "class Foo"
于 2009-03-20T05:46:22.343 に答える