Sto imparando Scala lavorando gli esercizi del libro "Scala per gli impazienti". Un esercizio che chiede:Qual è l'implicazione delle parole chiave protette nella definizione della classe in Scala?
Il file contiene la definizione Stack.scala
class Stack[+A] protected (protected val elems: List[A])
Spiegate il significato delle parole chiave
protected
.
Qualcuno può aiutarmi a capire questo? protected
ha ovviamente senso per le variabili membro, ma quale implicazione ha in una definizione di classe?
Grazie! Qual è il significato di '+ A'? –
Significa che 'Stack' è covariante nel parametro generico' A', nel senso che 'Stack [Dog]' è un 'Stack [Animale]'. Se non si aggiunge il segno più, allora l'assegnazione 'val x: Stack [Animale] = Stack [Cane] (Cane (" Pluto "))' è illegale. –
Sì in Java, 'Elenco' non è 'Lista '. Quindi la contravarianza è '-A' allora? Se è così, immagino che si possa scrivere 'class Stack [+ A] (elems: List [-A])'? –