2011-11-15 9 views
11

Nuevo en Scala. El lenguaje es bastante conciso.Scala múltiple con

curiosidad por qué la implementación de múltiples rasgos requiere múltiples "con" declaraciones.

Por ejemplo:

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

vs

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

si va por esa ruta, ¿por qué tener "con" en absoluto? ¿Por qué no 'Class Foo extiende Bar, A, B, C'? – dhg

+0

de nuevo, nuevo a Scala, pero yo sepa herencia múltiple con "se extiende" no está soportado, mientras que "con" proporciona una forma de tal funcionalidad – virtualeyes

Respuesta

27

consideran este

class Foo[A, B] 

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

vs

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

Simplemente no es inequívoco en todos los casos.

+0

ahhh, ok, que aclara la aparente no DRY-dad de múltiple con, gracias. – virtualeyes

+0

@virtualeyes Puedes pensar en 'con' como una coma (de aspecto diferente), lo que debería hacer evidente que no hay una violación DRY. – thedayturns