Переменные в Swift

Переменные и функции в Swift - Start iOS

Мы написали наше первое приложение и кажется что разработка для iOS это просто. Но в «Привет, Мир!» было слишком мало кода и хотелось бы для начала понять как создаются переменные в Swift. Как раз этим мы и займемся в данном уроке.

Для начала хотелось бы рассказать, что же за язык программирования — Swift. В книге «The Swift Programming Language» Apple описывает его следующим образом:

Swift — это новый язык программирования для IOS, OS X, watchOS и tvOS приложений, который опирается на лучшие традиции C и Objective-C, без ограничений совместимости C. Swift принимает безопасные модели программирования и добавляет современные функции, чтобы сделать программирование проще, более гибким и более увлекательным. — перевод WOOPSS.com

Несмотря на то, что язык программирования (далее ЯП) вышел в свет всего в 2013 году (к примеру, язык Objective-C был создан еще в 1983), он уже покорил миллионы iOS разработчиков, которые, в свою очередь, начинают потихоньку отказываться от Obj-C.

Внимание! Данный урок рассчитан на тех, кто имеет хотя бы отдаленное представление о программировании в целом, но не знает синтаксис языка Swift. В прочем, если Вы новичок в програмировании, мы советуем изучить этот урок, а также перейти к изучению книги «The Swift Programming Language» от компании Apple.


Для удобства изучения базовых вещей в Swift, откройте окно приветствия Xcode (нажмите shift+cmd+1 или с помощью контекстного меню — Window->Welcome to Xcode) и создайте новый Playground подобно тому, как мы создавали новый проект в знакомстве с Xcode. Playground представляет собой интерактивную среду кодирования для языка Swift, которая оценивает каждый созданный объект, переменную, функцию и тут же отображает результаты, без необходимости создания проекта.

Откройте только что созданный плейграунд и Вы увидите следующий код:

Apple тоже чтит традицию программирования «Hello World». В левой секции плейграунда располагается редактор, в котором разработчик пишет код. В правой части сразу же отображается текущее состояния переменных и результаты работы функций, вычислений и т.д.

Переменные и функции в Swift

Окно Playground

Строковые переменные

В Swift есть три основных вида переменных — числа, строки и булевы переменные. Для их объявления используется оператор var, а для создания константы — let. Добавьте следующий код после стандартной заготовки Apple:

В строке #1 мы создаём константу под именем myName и тут же задаём ей значение «My name is». Мы больше не сможем изменить её значение. На следующей строке мы создаём переменную с именем name и даём компилятору понять, что в будущем это будет строковый объект (String). В следующей строке уже задаём ей значение. Мы можем изменять эту переменнцю в любой строчке кода, так как она была создана с помощью оператора var.

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

Здесь мы создаём две строковые константы двумя способами. Первый способ — это конкантенация, которая встречается в других ЯП. Здесь с помощью оператора «+» строки соединяются воедино.

Во втором способе мы обернули наши переменные внутри строки в оператор «\( )». Здесь можно указывать не только строковые виды данных, но также числа и булевы переменные — компилятор сам их преобразует в строковый тип без каких либо танцев с бубном от разработчика.

Также Вы можете создавать строковые переменные с помощью инициализации класса String. Ниже приведены несколько вариантов:

Одним из преимуществ языка Swift является возможность дополнять строковые переменные с помощью оператора «+=«, как это делается с числовыми данными. Добавьте следующий код и посмотрите что из этого получится:

Численные переменные

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

  • Int — это целые числа без дробной компоненты, такие как 42 и -23.
  • Double — это числа с дробным компонентом, такие как 3.14159, 0,1, и -273.15. Представляет собой 64-битное число с плавающей точкой.
  • Float — также дробные числа, но они представляют с собой 32-битное число с плавающей точкой.

Ниже показан пример инициализации таких чисел:

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

Если же Вы хотите сделать расчет с уже инициализированными, то Вам потребуется привести их к тому типу, который Вы хотите получить в результате. Вот как это работает на примере переменных, которые мы инициализировали Выше:

В первом случае переменная resultInt будет равна 25, так как компилятор автоматически отбросит Всё что после запятой у pi. Во втором же случае мы получим 25.14159, так как переменная resultInt была преобразована в тип Double.

Также как и на примере строковых переменных, мы можем модифицировать ту же числовую переменную несколькими способами:

Заметьте! Если при инициализации переменной Вы укажите число в двойных кавычках (к примеру, «22») — компилятор автоматически воспримет это строковым типом. Тогда при расчетах Вам прийдется преобразовывать её в численный тип.

Логический (булевы) тип

Swift имеет базовый логический тип, называемый Bool. Логические значения могут быть только истинными или ложными. Соответсвенно Swift обеспечивает две логические постоянные значения: true (истина) и false (ложь).

Данный вид переменных зачастую используется в условиях и именно на них строится логика приложения. Рассмотрим булевы на простых примерах:

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

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

Массивы и словари

По-мимо простых переменных, Swift еще поддерживает объекты типа array (массив) и dictionary (словарь). Оба объекта являются «контейнерами», которые могут хранить любое количество переменных и других объектов внутри себя.

Для инициализации массива необходимо объявлять переменные «обернув» их в квадратные скобки ([]). Чтобы получить вложенный объект нужно сослаться на его индекс. Ниже показан пример объявления массива и способ получить нужный элемент из него:

Вот как можно объявить пустой массив (к примеру, Вам может понадобиться хранить в нем объекты в будущем):

Вместо типа String можно указывать любой тип, который Вы захотите добавить. Если же Ваш массив должен хранить несколько типов данных или Вы не знаете какой тип получите (к примеру, когда получаете ответ от сервера), то вместо String можно указать AnyObject.

Главным отличием словарей от массивов заключается в том, что значения в нём хранятся на по индексам, а по ключам.  Рассмотрим пример ниже:

На этом наш урок подошел к концу. Пишите в комментариях, если Вам что-либо было не понятно, а также следите за обновлениями на ресурсе Start iOS — Уроки по разработке iOS приложений.