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, как показано в следующем коде:

В этом примере класс Thermometer имеет простое свойство temperatureFahrenheit и вычисленное свойство temperateCelsius .

Обратите внимание, что методы get и set класса Thermometer не ссылаются на переменную экземпляра, поскольку в Swift нет такой вещи, как переменная экземпляра!

В этом случае метод get извлекает значение из свойства TemperatureFahrenheit, преобразует его в градусы Цельсия и возвращает значение. Метод set принимает переданное ему значение, преобразует его в градусы Фаренгейта, а затем сохраняет результат в свойстве TemperatureFahrenheit.

Значение, переданное методу set свойства, хранится в неявно названном параметре с именем newValue . Если вы хотите использовать другое имя параметра, вы можете указать имя в скобках после набора, как показано в следующем коде:

Указание имени параметра может облегчить понимание вашего кода. В этом примере установка имени параметра в celsiusValue проясняет, что метод set преобразует значение из градуса Цельсия в градусы Фаренгейта.

Объявление методов

Следующий код содержит пример объявления метода Swift:

Как и в Objective-C, в Swift вы объявляете метод экземпляра между открывающими и закрывающими фигурными скобками класса, к которому он принадлежит.

Чтобы объявить метод, сначала укажите ключевое слово func, а затем имя метода. Если у метода есть параметры, вы включаете их в скобки. Для каждого параметра вы указываете имя параметра, за которым следует двоеточие, а затем его тип. Если метод имеет возвращаемое значение, вы добавляете дефис и знак «больше» ( -> ), а затем тип возвращаемого значения.

Следующий код содержит пример метода, который не принимает параметров и ничего не возвращает:

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

Методы инициализации

Следующий код содержит пример метода инициализатора, который используется для инициализации класса.

Методы инициализатора всегда называются init и, в отличие от Objective-C, никогда не возвращают значение. В приведенном выше примере метод init принимает параметр currentTength, в котором вы можете передать начальную температуру. Это значение затем сохраняется в свойстве TemperatureFahrenheit.

Вы можете создать несколько методов инициализации, как показано в следующем примере кода:

В этом примере оба метода называются init, поэтому чтобы сделать имена уникальными, внешним параметрам присваиваются параметры - fromFahrenheit и fromCelsius . Это делает полные имена методов init (fromFahrenheit :) и init (fromCelsius :) соответственно.

Стоит отметить, что в Swift методы init не наследуются. С практической точки зрения это означает, что вы не должны помещать какой-либо код в метод init, который хотите переопределить в подклассе. Если у вас есть код, который вы хотите выполнить на этапе инициализации класса, и вы хотите иметь возможность переопределить этот код в подклассе, вы можете создать отдельный метод, поместить код инициализации в этот метод, а затем вызвать этот метод из нач .

Создание экземпляра класса

Вот пример того, как создать экземпляр класса:

Как видите, для создания экземпляра класса вы объявляете переменную для хранения ссылки на класс, вводите знак равенства (оператор присваивания), а затем имя класса и круглые скобки.

Заключение

Вот некоторые из тех самых основ, которые вам нужно знать, чтобы начать программирование на Swift. В следующих статьях я углублюсь в язык, чтобы помочь вам овладеть новым синтаксисом и структурой Swift.