我有一個特點I
(中介),M
(攪拌機)混合性狀和特質S
(具體)。強制性狀實施方法
class M extends Something with S {
def baz() = foo()
}
trait I {
def foo(): { ...; bar(); ... }
def bar()
}
trait S extends I {
def bar() = 42
}
I
用作M
和S
之間的中間層,提供了一個通用接口。
我有一個實現的方法foo
在I
調用一個方法bar
(在I
未實施,但其中所述)。我想實現的是,延長I
所有特質必須實現bar
,所以這將拋出一個編譯時錯誤,因爲bar
未實現:
trait Z extends I
這是可能的Scala呢?
P.S .:我知道Force Scala trait to implement a certain method的答案,但我不想要那種明顯的耦合。
你不能強迫'特質'來實現類似的東西。 – david
我很好奇,你爲什麼需要那個?只要您嘗試具體實現I(強制您提供def欄),就會收到編譯錯誤。但一個特質是由本質抽象... – Guillaume
我需要它,因爲特點和具體的實現住在單獨的軟件包。這些特質在圖書館裏,沒有這些特性的具體用法。我可以在我的測試套件中測試這些特徵的正確實現。但是,如果錯誤在編譯時已經彈出(例如,在我的IDE中),我希望它更好。 – tobi