Il recupero e l'impostazione delle variabili all'interno delle classi si riferisce al recupero ("acquisizione") o all'alterazione ("impostazione") del loro contenuto.
Considera una variabile members
di una classe family
. Naturalmente, questa variabile dovrebbe essere un numero intero, poiché una famiglia non può mai essere composta da due punti qualcosa di persone.
Quindi probabilmente andrai avanti definendo la members
variabile in questo modo:
class family {
var members:Int
}
Ciò, tuttavia, darà alle persone che utilizzano questa classe la possibilità di impostare il numero di membri della famiglia su qualcosa come 0 o 1. E poiché non esiste una famiglia di 1 o 0, questo è abbastanza sfortunato.
È qui che entrano in gioco i getter e i setter. In questo modo puoi decidere tu stesso come modificare le variabili e quali valori possono ricevere, oltre a decidere quale contenuto restituire.
Tornando alla nostra classe familiare, assicuriamoci che nessuno possa impostare il members
valore su un valore inferiore a 2:
class family {
var _members:Int = 2
var members:Int {
get {
return _members
}
set (newVal) {
if newVal >= 2 {
_members = newVal
} else {
println('error: cannot have family with less than 2 members')
}
}
}
}
Ora siamo in grado di accedere alla members
variabile come prima, digitando instanceOfFamily.members
, e grazie alla funzione setter, possiamo anche impostare il suo valore come prima, digitando, ad esempio: instanceOfFamily.members = 3
. Ciò che è cambiato, tuttavia, è il fatto che non possiamo più impostare questa variabile su qualcosa di più piccolo di 2.
Notare l'introduzione della _members
variabile, che è la variabile effettiva per memorizzare il valore che abbiamo impostato tramite la members
funzione setter. L'originale members
è ora diventata una proprietà calcolata, il che significa che funge solo da interfaccia per gestire la nostra variabile effettiva.