2011-11-15 92 views
11

斯卡拉新來的。語言很簡潔。斯卡拉多個與

奇怪爲什麼實現多個特徵需要多個「with」語句。

例如:

class Foo extends Bar with A with B with C {} 

class Foo extends Bar with A, B, C {} 
+1

如果你要去那條路線,爲什麼要「擁有」呢?爲什麼不'Foo類擴展Bar,A,B,C'? – dhg

+0

又是新的scala,但不支持帶「擴展」的afaik多重繼承,而「with」提供了這種功能的形式 – virtualeyes

回答

27

考慮這個

class Foo[A, B] 

new Foo[Bar with D with E, Bar with E] {} 

VS

new Foo[Bar with D, E, Bar with E] {} 

這在所有情況下都不是毫不含糊。

+0

ahhh,好的,這說明了多謝的明顯非DRY-ness,謝謝。 – virtualeyes

+0

@virtualeyes你可以將'with'看作一個(看起來不同的)逗號 - 應該明顯表示沒有DRY違規。 – thedayturns