В этом уроке будут кратко описаны некоторые особенности данного языка, разберём, что такое язык Swift и каков его синтаксис.
Цель урока: Знакомство с синтаксисом языка Swift: с его основными функциями, типами данных и структурами.
Что такое язык Swift?
Язык Swift – язык программирования для разработчиков iOS и macOS. Его разработка началась в июле 2010 года Крисом Лэттнером с возможным сотрудничеством многих других программистов в Apple, но основа была заложена еще в 1989–1995 годах на платформе NeXT.
Язык представляет собой альтернативу языка Objective-C и использует современные понятия теории языка программирования и стремится представить более простой синтаксис. С помощью данного языка процесс создания программ становится очень гибким и продуктивным, так как Swift вобрал в себя лучшие черты различных языков программирования (Objective–C, C, Java, Rust, Haskell, Ruby, Python, C#, и ещё множество языков). Swift по производительности разрабатываемых программ приближается (а в некоторых случаях уже и обгоняет) к известному языку программирования C++ . Последняя версия этого языка (на момент написания урока) – Swift 4 (https://developer.apple.com/swift). Он до сих пор активно развивается и используется разработчиками, ввиду наличия огромного потенциала.
Язык Swift разработан с нуля со следующими отличительными особенностями:
- Скорость. Swift предназначен в качестве замены для Си языков (C, C++ и Objective-C). Как таковой, Swift должен быть сопоставим с этими языками в производительности для большинства задач, а в чем-то превосходить их.
- Ясность. Язык Swift легко читается, а код легко пишется. Его синтаксис довольно простой, понятный и последовательный.
- Безопасность. Swift был разработан с самого начала, чтобы быть более безопасным, чем Cи языки, и устраняет целые классы небезопасного кода. Переменные всегда инициализируются перед использованием, массивы и целые числа проверяются на переполнение, а память управляется автоматически. Синтаксис настроен так, чтобы было легко определить ваши намерения, например, простые три символа ключевые слова определяют переменную (var) или константу (let).
- Экономичность. Swift – небольшой язык, предоставляющий некоторые базовые операции и функциональные возможности и не более того. Остальное должно быть обеспечено вашим кодом или библиотеками кода, которые можно использовать – например, Cocoa.
Эти особенности делают использование языка Swift в разработке мобильных приложений приоритетнее. Для понимания основ программирования Swift – это гораздо более простой язык для работы. Мобильный разработчик Denis Mikan утверждает: «Swift ликвидирует трудности, которые скопились за много лет в языке Objective-C. Он призван, в первую очередь, облегчить ситуацию тех разработчиков, которые не имеют желания разбираться с огромными, сложными конструкциями Objective-C. Язык Swift так же откроет новую эру для непрофессиональных разработчиков, которые сейчас кроме разработки маленьких игр на JavaScript, так же смогут выбирать и этот язык»
Синтаксис SWIFT
Язык Swift схож с другими языками программирования. Swift активно использует переменные, константы, массивы, списки, условия, циклы, функции, классы, структуры и т.д.
Комментарии
Хорошо написанный программный код должен быть подкреплен комментариями, чтобы человек, впервые работающий с этим кодом, мог легко разобраться в нём. В языке Swift также, как и в языке Си, одиночные комментарии начинаются с двух косых черт. Многострочный комментарий начинается с «/*», после чего пишется какая-либо заметка, а заканчивается символами «*/». Пример комментариев:
1 | //Это ваш одиночный комментарий |
1 2 3 | /*А это ваш многострочный комментарий */ |
Переменные
В языке Swift в конце строки не используется точка с запятой за исключением того, случая, когда в одной строке находится сразу две команды, тогда они разделяются точкой с запятой.
Объявление любой переменной выглядит следующим образом:
1 | var имя_переменой = значение_переменной |
После ключевого слова «var» идёт название переменной, а после оператора присваивания «=» идёт значение переменной. В языке Swift указание типа данных переменной не требуется. Swift проводит анализ заданного значения и присваивает переменной тип данных (например, числовое или строчное).
Основные типы данных: Int, Float, Double, String, bool. Чтобы изменить значение переменной достаточно обратится к переменной по её имени и, используя оператор присваивания «=» изменить значение. Повторно использовать ключевое слово «var» для уже созданной переменной не требуется.
Константа
Константа является той же переменной, но за исключением того, что изменять её значение в будущем невозможно. Объявление константы ничем не отличается от объявления любой переменной, за исключением того, что используется ключевое слово «let». Объявление константы выглядит следующим образом:
1 | let имя_константы = значение_константы |
В языке Swift для оптимизации работы приложений желательно использовать константы во всех случаях, когда значение не будет изменяться в ходе работы программы.
В ходе разработки приложений очень часто требуется отследить изменения в переменной для ускорения процесса поиска ошибок. Для этой цели может использоваться встроенная глобальная функция print(), которая выводит сообщение в консоли Xcode.
Пример использования функции print(): print(a). Консоль выведет значение некой переменной «a». Для вывода определенного сообщения в консоли достаточно его заключить в кавычках внутри функции (print(«Hello, world! «)).
Арифметические действия
С числами, которые хранятся в переменных, можно производить арифметические действия (это можно делать и в других языках программирования). В языке Swift арифметические операции можно производить с числами любого типа данных (целые или дробные). Список доступных арифметический операций в Swift отображен в таблице:
Бинарный оператор сложения, который складывает операнд a с операндом b и выводит результат a+b. | |
Бинарный оператор вычитания, который вычитает из первого операнда a, операнд b и выводит результат a-b. | |
Бинарный оператор умножения, который перемножает операнд a с операндом b и выводит результат a*b. | |
Бинарный оператор деления, который выполняет деление операнда a с операндом b и выводит результат a/b. | |
Бинарный оператор остатка от деления, который делит первый операнд a на второй операнд b и возвращает остаток от деления a%b. | |
Унарный оператор инкремента, увеличивающий значение операнда на единицу. | |
Унарный оператор декремента, уменьшающий значение операнда на единицу. |
Кортежи
Одной из интересных функциональных возможностей языка являются кортежи. Кортеж – объект, который группирует значения различных типов в пределах одного составного значения.
Кортеж хранится в константах или в переменных. Объявление кортежа выглядит следующим образом:
1 | let имя_константы = (Значение1, Значение2, …) |
1 | var имя_переменной = (Значение1, Значение2, …) |
Например, объявим кортеж с тремя разными типами данных:
1 | var cortege = (false, 256,"World") |
В данном случае false – логическое значение типа Bool, 256 – целочисленное значение типа Int, «World» – строковое значение типа String. В результате данный кортеж группирует вместе значения трех различных типов данных, позволяя хранить их в пределах одной переменной.
Для доступа к элементам кортежа используется числовой индекс, указываемый через точку после названия кортежа:
1 2 3 4 | var cortege = (false, 256,"World") print ("Значение bool: \(cortege.0)") print ("Значение Int: \(cortege.1)") print ("Значение String: \(cortege.2)") |
В консоли отобразится:
1 2 3 | Значение bool: false Значение Int: 256 Значение String: World |
Оператор ветвления if
Как и в других языках программирования, в Swift есть оператор ветвления if. Его синтаксис:
1 2 3 4 5 6 | if условие_которое_проверяется { //действие, выполняемое при выполнении условия } else { //действие, выполняемое при невыполнении условия } |
Массивы
Массивы хранятся в переменных или в константах, поэтому для объявления массива в языке Swift используются ключевые слова «let» или «var»:
1 | let название_изменяемого_массива = ["Значение1","Значение2", …] |
1 | var название_незменяемого_массива = ["Значение1","Значение2", …] |
Доступ к элементам массива осуществляется с помощью индекса, заключенного в скобках после названия массива (massive[2]). В языке Swift массивы имеют базовые свойства и некоторые методы для добавления, очистки, проверки на пустоту массива. Существует возможность создания многомерных массивов.
Словари
Ещё одна возможность Swift – Словари. Словари – неупорядоченные коллекции элементов одного типа, обратится к которым можно через специальные ключи. Каждый элемент словаря состоит из своего уникального ключа, который устанавливает разработчик. Синтаксис словаря выглядит следующим образом:
1 | var название_словаря = ["Ключ1":"Значение1", "Ключ2":"Значение2", "Ключ3":"Значение3"] |
Здесь Ключ1, Ключ2, Ключ3 – это уникальные ключи, которые служат для доступа к значениям словаря. Тип данных ключа – String, но такой тип данных не обязателен для ключа. Главное правило: ключ должен быть уникальным и не должен повторяться.
Пример объявления словаря и действий с ним:
1 2 3 4 5 6 7 8 9 | var Country = ["Rus":"Russia", "USA":"America", "Ger":"Germany"] //получение значение элемента print(Country["Rus"]) //изменение значения элемента Country["USA"] = "The United States of America" //добавление нового ключа и значения в словарь Country["Ita"] = "Italy" //удаление пары ключ-значение Country.removeValueForKey("Ger") |
В результате в словаре появится измененное значение элемента с ключём USA, добавление нового ключа Ita и значения, а также удаление элемента с ключем Ger.
Циклы Swift
Как и другие языки программирования, Swift работает с циклами. Цикличное выполнение кода осуществляется операторами for, for-in, while и repeat while. Механизм работы циклов разный. Описание различных типов циклов, синтаксиса и их механизма работы приведены в таблице:
1. Инициализация начального значения, в котором объявляется некоторая начальная переменная. 2. Проверка условия окончания, если оно возвращает false, цикл завершает работу. Если возвращается значение true, цикл продолжает работу и выполняет блок кода. 3.После выполнения блока кода, начальное выражение меняет своё значение в зависимости от заданного действия. 4. Новая итерация и повторение действий с шага 2. | for начальное_выражение; условие_окончания; действие { блок кода } | |
Цикл выполняет блок кода для каждого элемента в последовательности. Перед каждой итерацией последующий элемент из последовательности присваивается объявленной переменной, которая доступна в блоке кода. После перебора всех элементов последовательности цикл завершает свою работу. | for переменная in последовательность { блок кода } | |
Цикл выполняется до тех пор, пока условие истинно. Когда условие возвращает false, цикл завершает свою работу. | while условие { блок кода } | |
Такой цикл является циклом с последующей проверкой условия. Сначала происходит выполнение блока кода, а затем проверяется условие. Если условие возвращает true, цикл повторяется, если false – цикл завершает работу. | repeat { блок кода } while условие |
Playgroung проект
Playgroung проект – уникальное встроенное приложение, позволяющее изучать язык Swift интерактивно. Это среда для изучения основ программирования, созданная компанией Apple. Код, написанный пользователем, мгновенно компилируется, а результат тут же отображается.
Для создания нового playground проекта в первоначальном диалоговом окне создания проектов Xcode необходимо выбрать пункт «Get Started with a playground»:

Далее необходимо выбрать пустой шаблон «Blank» и нажать кнопку «Next»:

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

На экране отобразится первоначальный проект, в котором есть одна переменная str с текстом «Hello, playground» и сразу рядом в области результатов видно содержимое переменной.

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

Вопросы для проверки себя
- Назовите основные базовые операторы языка Swift.
- Как объявляются переменные и константы?
- Зачем необходимо использовать комментарии в программном коде?
- С помощью какой встроенной функции можно выводить сообщения в консоль?
- В чём различие между переменными, кортежами, массивами и словарями?
- Назовите виды циклов в языке Swift.
- Что такое playground проект?