2011-08-24 11 views

答えて

7

、あなたはLiveだけEventのサブクラスに適用することができることを指定します。後でAlgorithmに適用しようとしていますが、これはEventのサブクラスではないため、コンパイラは不平を言います。

  • 特性自体としてEventを宣言;:

    あなたの本来の意図(そのスニペットからは明らかではない)に応じて、どちらかにしたいこと

  • ありAlgorithmEventがあります。
5

複数のクラスを継承しています。特性LiveEventの場合、タイプAlgorithm with Liveには2つのクラス祖先、EventAlgorithmがあります。これは禁止されています。あなたがしたいことははっきりしていませんが、Eventをクラスではなく特性にすることができれば、それはうまくいくはずです。 trait Live extends Eventは、LiveEventまたはサブクラスと混合する必要があることを意味します。だからAlgorithmEventまで拡張できれば(そうは思われません)、それも機能します。

0

完全な例は次のようになります。

// Event driven processing. Must be a trait due to didierd's comment 
// and Jean-Philippe's comment 
trait Event 

// Live events (as opposed to historical) 
trait Live extends Event 

// Self typing isn't strictly needed but generally it's not much use without it 
// as I assume you're going to want to use methods of the Event within your 
// Algorithm 
class Algorithm { self: Event => 
} 

val t = new Algorithm with Live 
関連する問題