L'obtention et la configuration des variables dans les classes se réfèrent soit à la récupération ("obtention"), soit à la modification ("réglage") de leur contenu.
Considérez une variable members
d'une classe family
. Naturellement, cette variable devrait être un entier, car une famille ne peut jamais se composer de deux points quelque chose de personnes.
Donc, vous irez probablement de l'avant en définissant la members
variable comme ceci:
class family {
var members:Int
}
Ceci, cependant, donnera aux personnes utilisant cette classe la possibilité de fixer le nombre de membres de la famille à quelque chose comme 0 ou 1. Et comme il n'y a pas de famille de 1 ou 0, c'est assez malheureux.
C'est là que les getters et les setters entrent en jeu. De cette façon, vous pouvez décider vous-même comment les variables peuvent être modifiées et quelles valeurs elles peuvent recevoir, ainsi que décider du contenu qu'elles renvoient.
Revenant à notre classe familiale, assurons-nous que personne ne peut définir la members
valeur à moins de 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')
}
}
}
}
Maintenant , nous pouvons accéder à la members
variable avant, en tapant instanceOfFamily.members
, et grâce à la fonction setter, on peut également définir la valeur de comme avant, en tapant, par exemple: instanceOfFamily.members = 3
. Ce qui a changé, cependant, c'est le fait que nous ne pouvons plus définir cette variable sur une valeur inférieure à 2.
Notez l'introduction de la _members
variable, qui est la variable réelle pour stocker la valeur que nous avons définie via la members
fonction setter. L'original members
est maintenant devenu une propriété calculée, ce qui signifie qu'il agit uniquement comme une interface pour traiter notre variable réelle.