Un exercice assez simple de Cay Horstmann livre " Scala pour les impatients " continue à me laisser perplexe. Il s'agit de primary
, auxiliary
y default primary
constructeurs :
ex 5.10 : Considérons la classe
class Employee(val name: String, var salary: Double) {
def this() { this("John Q. Public", 0.0) }
}
Réécrivez-le pour utiliser des champs explicites et un constructeur primaire par défaut.
Je ne suis pas sûr de ce que je suis censé faire. L'un d'entre vous pourrait-il me proposer une solution ?
Cependant, le fait d'essayer de résoudre cet exercice m'a peut-être fait prendre conscience de quelque chose que je n'avais pas remarqué auparavant à propos du constructeur primaire et de la fonction val
(comme vous pouvez le constater, je ne suis pas tout à fait sûr) :
Ai-je raison si je dis qu'un val
(comme name
en el Employee
ci-dessus) ne peut être initialisée que par le biais de la classe primary
et non par un constructeur auxiliary
un ? Dans ce dernier cas, il serait considéré par le compilateur comme une réaffectation à un fichier de type val
causant une erreur.
Au début, je pensais val
comme un équivalent approximatif des champs finaux en Java, en espérant qu'il serait légal de les assigner pour la première fois dans n'importe quel constructeur, mais il semble que j'avais tort.
Je ne suis pas tout à fait satisfait de ce qui n'est peut-être qu'une hypothèse, et j'apprécierais que quelqu'un me donne des informations plus précises sur ce point.