Un ejercicio muy simple de libro de Cay Horstmann «Scala para los impacientes» me mantiene al tanto desconcertante. Es sobre primary
, auxiliary
y default primary
constructores:constructores en Scala (principal/auxiliar/principal predeterminado)
ex 5,10: Considérese la clase
class Employee(val name: String, var salary: Double) {
def this() { this("John Q. Public", 0.0) }
}
reescritura que utilice campos explícitos y un constructor por defecto primario.
No estoy seguro de lo que se supone que debo hacer. ¿Podrían algunos de ustedes proponer una solución?
Sin embargo, tratando de resolver este ejercicio puede me han hecho consciente de algo que no había notado antes campos constructor acerca primaria y val
(como se puede ver, no estoy muy seguro):
I Am correcto si digo que un campo val
(como name
en la clase anterior Employee
) solo se puede inicializar a través del constructor primary
y no mediante un auxiliary
uno? En este último caso, sería considerado por el compilador como una reasignación a un campo val
causando un error.
Al principio pensé en los campos val
como un equivalente aproximado de los campos finales en Java, esperando que fuera legal asignarlos por primera vez en cualquier constructor, pero parece que estaba equivocado.
No estoy del todo satisfecho con lo que puede ser solo una suposición, por lo que agradecería que alguien me brinde información más precisa sobre ese punto.
Tuve esta pregunta exacta del mismo ejercicio. Tal vez estoy confundido por lo que el autor quiere decir con "explícito". – vmayer