Swift 101 - класи, змінні, властивості та методи

Як і було обіцяно, ось моя перша гра на навчання програмі на новому мовою Swift!

Визначення класів у Swift

Наступний код показує приклад визначення класу Swift:

Щоб оголосити клас у Swift, ви використовуєте ключове слово class, за яким слідує ім'я класу. Якщо він має надклас, ви додаєте двокрапку та назву суперкласу. Початок і кінець класу позначаються відкриваючими і закриваючими фігурними дужками.

У Swift класи визначаються в одному файлі вихідного коду .swift у порівнянні з Objective-C, де класи визначаються у двох окремих файлах, файлі заголовка (.h) і файлу (.m).

Оголошення змінних

Наступний код показує приклад оголошення змінної:

Ви починаєте оголошення змінної за допомогою ключового слова var, за яким слідує ім'я змінної. Далі ви додаєте двокрапку, за яким слідує тип змінної. Після цього ви можете призначити значення змінної за допомогою оператора присвоєння (=).

У Swift, якщо призначити змінну початкове значення, не потрібно вказувати тип змінної, як показано в наступному коді:

Ви можете зробити це, оскільки Swift має те, що називається типовим висновком, де він може зрозуміти, або вивести тип змінної на основі значення, призначеного для нього.

У Objective-C ви можете оголосити змінні екземплярів на рівні класу та локальних змінних у межах методів. У Swift не існує змінних рівня класу - лише локальні змінні, які ви оголошуєте в межах методів. Проте властивості можна оголосити на рівні класу (див. Розділ Оголошення властивостей нижче).

Кінець зірочки

У Objective-C ви використовуєте зірочку, щоб вказати, що змінна містить покажчик на об'єкт. У Swift, константа або змінна може містити вказівник на адресу в пам'яті (хоча і не прямий покажчик), але вам ніколи не потрібно використовувати зірочку в цьому контексті.

Оголошення простих властивостей

Наступний код показує приклад оголошення про властивість:

Як ви можете бачити, це дуже схоже на оголошення змінної, за винятком того, що ви оголосите властивість на рівні класу, а не в межах методу.

Як і для змінних, якщо ви призначите властивість початкове значення, вам не потрібно вказувати тип властивості. Також можна ініціалізувати властивості в межах методів ініціалізації (докладніше див. Розділ нижче про ініціалізатори .) Наступний код показує приклад оголошення властивості без вказівки типу:

У Objective-C властивості зазвичай мають змінні резервних копій, в яких зберігається фактичне значення властивості. Swift спрощує властивості шляхом об'єднання понять властивостей і змінних екземплярів. Властивості більше не мають змінної екземпляра резервної копії. Все про майно оголошується в одному місці.

У Swift, вам не потрібно використовувати ключове слово self, щоб посилатися на властивість, якщо метод, в якому ви пишете код, має параметр з тим же ім'ям, що й властивість.

Оголошення обчислюваних властивостей

Swift також має обчислювані властивості, які пов'язані з методами get і set, як показано в наступному коді:

У даному прикладі клас Термометр має просте властивість за температурою Фаренгейта і обчислене властивість температурного градусу.

Зверніть увагу, що метод get і set класу Thermometer не посилається на змінну екземпляра, оскільки в Swift не існує такої речі, як змінна екземпляра!

У цьому випадку метод get отримує значення з властивості temperatureFahrenheit, перетворює його в градуси Цельсія і повертає значення. Метод set приймає значення, передане йому, перетворює його у Фаренгейт, а потім зберігає результат у властивості температуриFahrenheit .

Значення, передане методу набору властивостей, зберігається в неявно заданому параметрі під назвою newValue . Якщо ви хочете використовувати інше ім'я параметра, ви можете вказати ім'я в дужках після набору, як показано в наступному коді:

Визначення імені параметра може полегшити розуміння вашого коду. У цьому прикладі встановлення імені параметра в celsiusValue зрозуміло, що метод set перетворює значення з Celsius на Fahrenheit.

Оголошення методів

Наступний код містить приклад декларації методу Swift:

Як і у Objective-C, у Swift ви оголосите метод екземпляра між відкриваючими та закриваючими фігурними дужками класу, до якого він належить.

Щоб оголосити метод, спочатку вкажіть ключове слово func, за яким слідує ім'я методу. Якщо метод має параметри, ви включаєте їх у дужки. Для кожного параметра вказується ім'я параметра, за яким слідує двокрапка, а потім його тип. Якщо метод має повернене значення, ви потім додаєте дефіс і більше, ніж знак ( -> ), за яким слід повернути значення.

Наступний код містить приклад методу, який не приймає ніяких параметрів і нічого не повертає:

Як ви можете бачити, дужки потрібні після імені методу, навіть якщо немає параметрів. Метод, який не повертає нічого, не потребує індикатора повернення значення ( -> ) після дужок.

Методи ініціалізації

Наступний код містить приклад методу ініціалізації, який використовується для ініціалізації класу.

Методи ініціалізації завжди називаються init і, на відміну від Objective-C, ніколи не повертають значення. У наведеному вище прикладі метод init приймає параметр currentTemperature, в якому можна передавати початкову температуру. Це значення потім зберігається в властивості Фаренгейта.

Можна створити кілька методів ініціалізації, як показано в наступному зразку коду:

У цьому прикладі обидва методи називаються init, тому, щоб зробити імена унікальними, зовнішнім ім'ям присвоюються параметри - від Фаренгейта та від Цельсія . Це робить повну назву методу init (fromFahrenheit :) та init (fromCelsius :) відповідно.

Варто відзначити, що в Swift, init методи не успадковуються. З практичної точки зору, це означає, що ви не повинні розміщувати будь-який код у методі init, який ви хочете перевизначити в підкласі. Якщо у вас є код, який ви хочете виконати під час початкової фази класу і хочете мати можливість перевизначити цей код у підкласі, ви можете створити окремий метод, розмістити код ініціалізації в цьому методі, а потім викликати цей метод з init .

Створення екземпляра класу

Ось приклад того, як створити екземпляр класу:

Як ви можете бачити, щоб створити екземпляр класу, ви оголосите змінну, що містить посилання на клас, введіть знак рівності (оператор присвоювання), а потім назву класу, за яким йдуть дужки.

Висновок

Ось деякі з самих основ, які потрібно знати, щоб розпочати програмування Swift. У наступних посадах я буду глибше занурюватися в мову, щоб допомогти вам освоїти новий синтаксис і структуру Swift.