Swift 101 - Klasy, zmienne, właściwości i metody

Zgodnie z obietnicą, oto moja pierwsza część dotycząca nauki programowania w nowym języku Swift!

Definiowanie klas w Swift

Poniższy kod pokazuje przykład definicji klasy Swift:

Aby zadeklarować klasę w Swift, należy użyć słowa kluczowego class, po którym następuje nazwa klasy. Jeśli ma nadklasę, dodaj dwukropek i nazwę nadklasy. Początek i koniec klasy są wskazywane przez otwierające i zamykające nawiasy klamrowe.

W Swift klasy są definiowane w jednym pliku kodu źródłowego .swift w porównaniu z Objective-C, gdzie klasy są definiowane w dwóch osobnych plikach, pliku nagłówkowym (.h) i pliku implementacyjnym (.m).

Deklarowanie zmiennych

Poniższy kod pokazuje przykład deklaracji zmiennej:

Deklarację zmiennej rozpoczynasz od słowa kluczowego var, po którym następuje nazwa zmiennej. Następnie dodajesz dwukropek, po którym następuje typ zmiennej. Następnie można przypisać wartość do zmiennej za pomocą operatora przypisania (=).

W Swift, jeśli przypisujesz wartość początkową zmiennej, nie musisz określać typu zmiennej, jak pokazano w następującym kodzie:

Możesz to zrobić, ponieważ Swift ma coś, co nazywa się wnioskowaniem typu, gdzie może dowiedzieć się, lub wywnioskować typ zmiennej na podstawie wartości, którą do niej przypisujesz.

W Objective-C można zadeklarować zmienne instancji na poziomie klasy i zmiennych lokalnych w obrębie metod. W Swift nie ma zmiennych na poziomie klasy - tylko zmienne lokalne, które deklarujesz w ramach metod. Możesz jednak zadeklarować właściwości na poziomie klasy (zobacz sekcję Właściwości deklarowania poniżej).

Koniec gwiazdki

W Objective-C używasz gwiazdki, aby wskazać, że zmienna przechowuje wskaźnik do obiektu. W Swift stała lub zmienna może zawierać wskaźnik do adresu w pamięci (choć nie jest to wskaźnik bezpośredni), ale nie trzeba w tym kontekście używać gwiazdki.

Deklarowanie prostych właściwości

Poniższy kod pokazuje przykład deklaracji właściwości:

Jak widać, jest to bardzo podobne do deklarowania zmiennej, z tym wyjątkiem, że deklarujesz właściwość na poziomie klasy, a nie w metodzie.

Podobnie jak w przypadku zmiennych, jeśli przypisujesz wartość początkową do właściwości, nie musisz określać typu właściwości. Możesz również zainicjować właściwości z poziomu metod inicjalizujących (szczegółowe informacje znajdują się w sekcji poniżej „ Inicjalizatory” ). Poniższy kod pokazuje przykład deklarowania właściwości bez określania typu:

W Objective-C właściwości zazwyczaj miały zmienne instancji kopii zapasowej, w których przechowywana była rzeczywista wartość właściwości. Swift upraszcza właściwości przez ujednolicenie pojęć właściwości i zmiennych instancji. Właściwości nie mają już zmiennej instancji podkładu. Wszystko o nieruchomości jest zadeklarowane w jednym miejscu.

W Swift nie musisz używać słowa kluczowego self, aby odwołać się do właściwości, chyba że metoda, w której piszesz kod, ma parametr o tej samej nazwie co właściwość.

Deklarowanie obliczonych właściwości

Swift ma również obliczone właściwości, które mają powiązane metody pobierania i ustawiania, jak pokazano w następującym kodzie:

W tym przykładzie klasa Termometr ma prostą właściwość temperatureFahrenheit i obliczoną właściwość temperateCelsius .

Zauważ, że metody get i set klasy Thermometer nie odwołują się do zmiennej instancji, ponieważ w Swift nie ma czegoś takiego jak zmienna instancji!

W tym przypadku metoda get pobiera wartość z właściwości temperatureFahrenheit, konwertuje ją na Celsjusza i zwraca wartość. Metoda set pobiera przekazaną wartość, konwertuje ją na Fahrenheita, a następnie zapisuje wynik we właściwości temperatureFahrenheit .

Wartość przekazana do metody set właściwości jest przechowywana w niejawnie nazwanym parametrze o nazwie newValue . Jeśli chcesz użyć innej nazwy parametru, możesz podać nazwę w nawiasach po zestawie, jak pokazano w następującym kodzie:

Podanie nazwy parametru może ułatwić zrozumienie kodu. W tym przykładzie ustawienie nazwy parametru na celsiusValue wyjaśnia, że ​​metoda zestawu konwertuje wartość z Celsjusza na Fahrenheita.

Metody deklarowania

Poniższy kod zawiera przykład deklaracji metody Swift:

Podobnie jak w Objective-C, w Swift deklarujesz metodę instancji między otwierającymi i zamykającymi nawiasami klamrowymi klasy, do której należy.

Aby zadeklarować metodę, należy najpierw określić słowo kluczowe func, a następnie nazwę metody. Jeśli metoda ma parametry, umieszczasz je w nawiasach. Dla każdego parametru podajesz nazwę parametru, po którym następuje dwukropek, a po nim jego typ. Jeśli metoda ma wartość zwracaną, dodajesz myślnik i większy niż znak ( -> ), po którym następuje typ wartości zwracanej.

Poniższy kod zawiera przykład metody, która nie przyjmuje żadnych parametrów i nie zwraca nic:

Jak widać, nawiasy są wymagane po nazwie metody, nawet jeśli nie ma żadnych parametrów. Metoda zwracająca nic nie potrzebuje wskaźnika wartości powrotu ( -> ) po nawiasach.

Metody inicjowania

Poniższy kod zawiera przykład metody inicjalizującej, która jest używana do inicjowania klasy.

Metody inicjujące są zawsze nazywane init i, w przeciwieństwie do Objective-C, nigdy nie zwracają wartości. W powyższym przykładzie metoda init akceptuje parametr currentTemperature, w którym można przekazać temperaturę początkową. Ta wartość jest następnie przechowywana we właściwości temperatureFahrenheit .

Możesz utworzyć wiele metod inicjalizatora, jak pokazano w poniższym przykładzie kodu:

W tym przykładzie obie metody są nazywane init, więc aby nazwy były unikalne, do parametrów przypisywana jest zewnętrzna nazwa - od Fahrenheita i od Celsjusza . To powoduje, że pełna nazwa metody to init (odpowiednio z Fahrenheit :) i init (fromCelsius :) .

Warto zauważyć, że w Swift metody init nie są dziedziczone. Z praktycznego punktu widzenia oznacza to, że nie powinieneś umieszczać żadnego kodu w metodzie init, którą chcesz nadpisać w podklasie. Jeśli masz kod, który chcesz wykonać podczas fazy początkowej klasy i chcesz móc nadpisać ten kod w podklasie, możesz utworzyć oddzielną metodę, umieścić kod inicjujący w tej metodzie, a następnie wywołać tę metodę z init .

Tworzenie instancji klasy

Oto przykład tworzenia instancji klasy:

Jak widzisz, aby utworzyć instancję klasy, deklarujesz zmienną do przechowywania odniesienia do klasy, wpisujesz znak równości (operator przypisania), a następnie nazwę klasy, po której następują nawiasy.

Wniosek

Oto niektóre z podstawowych informacji, których potrzebujesz, aby rozpocząć programowanie Swift. W nadchodzących postach zanurzę się głębiej w język, aby pomóc ci w opanowaniu nowej składni i struktury Swifta.