2010-07-19 16 views
6

En el Scala 2,8 de referencia, sección 5.3.3 página 69 (77 en el pdf) el siguiente párrafo aparecer:"clase A tiene éxito clase B" significa en referencia de Scala?

asumir un rasgo D define algún aspecto de una instancia x de tipo C (es decir D es una clase base de C). Entonces, el supertipo real de D en x es el tipo compuesto que consta de todas las clases base en L(C) que tienen éxito D.

lo que hace la notación medios L(C) (en el texto original es mayúscula caligráfica \ell como símbolo)?

¿Qué significa la frase "clases ... que tiene éxitoD" significa? No estoy familiarizado con la notación.

Respuesta

7

La conclusión es, L(C) consiste en todas las clases de bases (toda la jerarquía de herencia de C, incluyendo rasgos) clasificadas como una cadena, con Any en la parte superior, y C en la parte inferior. Tiene éxitoD medios, es más alto en la cadena luegoD.

La explicación más larga es que queremos saber, para cada clase, su "padre" - para fines de implementación y claridad general (es terriblemente complicado en C++, donde se permite la herencia múltiple sin límites). En Java, es simple: solo tienes una sola superclase directa. Sin embargo, debido a la composición de clase mixin en Scala, que es una forma de herencia múltiple (de una superclase + posiblemente varios rasgos), las clases base de cualquier clase forman un gráfico acíclico dirigido. L (C) es la linealización de las clases base de C, comenzando desde la superclase y agregando los rasgos (y sus clases base) de manera que forman una cadena y cada clase tiene sus propias clases base encima de sí misma. Puede leer más sobre esto en la Sección 6 de the overview of Scala. Es un esquema agradable y completo de la función.

+0

En realidad, creo que "sucede con D" significa que * es ** más alto ** en la cadena que D *. La definición dice que los rasgos que suceden a D son sus supertipos con respecto a una instancia de C. –

+0

Sí, parece que tiene razón. Reparar la respuesta. – finrod

+0

sin relación con la pregunta, todavía tengo curiosidad, ¿cuál es su lengua materna? Has referido a la clase como mujer "... cada clase tiene * su * propiedad ..." y me pregunto de dónde vino. Supongo que las clases suenan femeninas en tu lengua materna. –

2

L (C) es class linearization. Luego "tiene éxito" con respecto a la posición en la secuencia de resultados. La linealización se define en el capítulo 5.1.2 de the spec.

Cuestiones relacionadas