2016-12-01 19 views
2

は、私は、このようなクラスがあるとしましょう:このようななGroovy:親オブジェクトにプロパティのメソッドへの参照を追加し

class Foo { 
    def doFoo() { 
    println "foo" 
    } 
} 

別:

class Bar { 
    def doBar() { 
    println "bar" 
    } 
} 

そしてもう一本のように見えるもの:この例では

class Baz { 
    Foo foo = new Foo() 
    Bar bar = new Bar() 
} 

、何それはこのようにそれを使用できるように取る:

Baz baz = new Baz() 
baz.doFoo() 
baz.doBar() 

doFoodoBarメソッドは、それぞれのオブジェクトで定義されたバージョンに委譲するだけですか?何らかのメタプログラミングでこれを行う方法はありますか、あるいはそれぞれのメソッドを個別にラッパーとして定義しているのですか?

+0

はAST変換および特性についての詳細に入る別のポストが見つかりました:http://stackoverflow.com/a/23124968/493807 – Andy

答えて

3

@Delegateは何が必要です:

class Foo { 
    def doFoo() { 
    println "foo" 
    } 
} 

class Bar { 
    def doBar() { 
    println "bar" 
    } 
} 

class Baz { 
    @Delegate 
    Foo foo = new Foo() 
    @Delegate 
    Bar bar = new Bar() 
} 

Baz baz = new Baz() 
baz.doFoo() 
baz.doBar() 
+0

はちょうどこの自分自身を発見しました。まだGroovyを学び、それを毎日愛しています! – Andy

+0

@Andy、はい、本当にいい言語です。 – Opal

関連する問題