2012-11-27 10 views
7

次のコード:クラスで何度も形質を使用するには?

trait T { 
    function foo() {} 
} 

class C { 
    use T { T::foo as bar; } 
    use T { T::foo as baz; } 
} 

は、次のエラーを生成します:

Trait method bar has not been applied, because there are collisions with other trait methods on C

はクラスで二回形質を利用することが可能ですか?異なる名前を持つ

答えて

6

に「輸入」トレイトで定義されたメソッドを複数回には次の操作を行います。

class C { 
    use T { 
    foo as bar; 
    foo as baz; 
    } 
} 
+0

だったこと!ありがとう。 – Benjamin

+1

私は質問がどこから来ているのか分かりますが、このソリューションではまったく同じ機能を持つ2つの機能があり、まったく同じ内部で作業しています。なぜまったく同じ2つの関数が必要なのでしょうか? "bar"関数が "baz"関数とは異なるクラス属性を使用すると(barとbazが実際に同じになるが、2回は同じように)、それはそうではありません。 – Veda

+0

これは主に理論的な質問だったと思うので、非常に簡単な答えです。 –

0

はい、あなたが二回形質を使用することができます。それ

trait T { 
    function foo() {} 
} 

class C { 
    use T { T::foo as bar; T::foo as baz; } 
} 
関連する問題