2011-11-15 93 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