2012-03-28 137 views
3

假設我有多個trait s,每個特徵都會向延伸Actor的類添加一些行爲。定義將特定行爲添加到實現特定特徵的類的多個特徵的最佳實踐

它們每個都需要Actor上的一小部分方法。他們都可以像這樣延長Actor嗎?

trait A extends Actor { 
    def doAThing = { ... } 
} 
trait B extends Actor { 
    def doBThing = { ... } 
} 
trait C extends Actor { 
    def doCThing = { ... } 
} 

class D extends Actor with A with B with C 

還是應該每個性狀限定它需要從Actor作爲抽象方法,使得它們被最後,混凝土類,這是唯一的一個,然後,將延長Actor供給的方法呢?

+5

請參閱[scala自我類型和特質子類之間有什麼區別?](http://stackoverflow.com/questions/1990948/what-is-the-difference-between-scala-self-types-and-特質的子類)。這可能是你在找什麼。 – 4e6 2012-03-28 12:02:35

+0

我認爲這就是我正在尋找的東西。謝謝! – Russell 2012-03-28 12:10:09

+0

我根本不知道自我類型 - 如果你認爲這個問題是一條不同的路徑來回答相同的答案,那麼發佈它,我會接受它。 – Russell 2012-03-28 12:12:50

回答

6

繼承

trait A extends Actor 

意味着AActor。另一種方法是使用self-types

trait B { 
    self: Actor => 
} 

意味着B需要Actor中進行混合。

詳見linked question

相關問題