Pobieranie i ustawianie zmiennych w ramach klas odnosi się do pobierania („pobierania”) lub zmieniania („ustawiania”) ich zawartości.
Rozważmy zmienną members
klasy family
. Oczywiście ta zmienna musiałaby być liczbą całkowitą, ponieważ rodzina nigdy nie może składać się z dwóch punktów, czyli czegoś, co ludzie.
Więc prawdopodobnie poszedłbyś dalej, definiując members
zmienną w następujący sposób:
class family {
var members:Int
}
To jednak da ludziom używającym tej klasy możliwość ustawienia liczby członków rodziny na około 0 lub 1. A ponieważ nie ma czegoś takiego jak rodzina 1 lub 0, jest to bardzo niefortunne.
Tutaj wkraczają metody pobierające i ustawiające. W ten sposób możesz samodzielnie zdecydować, jak zmienne mogą być zmieniane i jakie wartości mogą one otrzymać, a także zdecydować, jaką zawartość zwracają.
Wracając do naszej klasy rodzinnej, upewnijmy się, że nikt nie może ustawić members
wartości mniejszej niż 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')
}
}
}
}
Teraz możemy uzyskać dostęp do members
zmiennej, jak poprzednio, przez pisanie instanceOfFamily.members
, a dzięki funkcji setter, możemy także ustawić jego wartość jak poprzednio, przez pisanie, na przykład: instanceOfFamily.members = 3
. Zmieniło się jednak to, że nie możemy już ustawić tej zmiennej na wartość mniejszą niż 2.
Zwróć uwagę na wprowadzenie _members
zmiennej, która jest rzeczywistą zmienną do przechowywania wartości ustawionej przez funkcję members
ustawiającą. Oryginał members
stał się teraz własnością obliczoną, co oznacza, że działa tylko jako interfejs do obsługi naszej rzeczywistej zmiennej.