Pobieranie i ustawianie zmiennych w ramach klas odnosi się do pobierania („pobierania”) lub zmieniania („ustawiania”) ich zawartości.
Rozważmy zmienną membersklasy 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 memberszmienną 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 _memberszmiennej, która jest rzeczywistą zmienną do przechowywania wartości ustawionej przez funkcję membersustawiającą. Oryginał membersstał się teraz własnością obliczoną, co oznacza, że działa tylko jako interfejs do obsługi naszej rzeczywistej zmiennej.