2011-11-15 17 views
11

Novità di Scala. La lingua è abbastanza concisa.Scala multiple con

Curioso perché l'implementazione di più tratti richiede più istruzioni "con".

Ad esempio:

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

vs.

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

se stai andando quella strada, perché hai "con" affatto? Perché non 'Class Foo estende Bar, A, B, C'? – dhg

+0

di nuovo, nuovo su scala, ma afaik l'ereditarietà multipla con "estende" non è supportato, mentre "con" fornisce una forma di tale funzionalità – virtualeyes

risposta

27

considerare questo

class Foo[A, B] 

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

vs

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

Non è inequivocabile in tutti i casi.

+0

ahhh, ok, che chiarisce l'apparente non-ESSENZA del multiplo con, grazie. – virtualeyes

+0

@virtualeyes Si può pensare a 'with' come una virgola (dall'aspetto diverso) - ciò dovrebbe rendere evidente che non vi è alcuna violazione DRY. – thedayturns