WWW.MASH.DOBROTA.BIZ
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - онлайн публикации
 

««БХВ-Петербург» УДК 004.438 Swift ББК 32.973.26-018.1 Х20 Харазян А. А. Х20 Язык Swift. Самоучитель. — СПб.: БХВ-Петербург, 2016. — 176 с.: ил. — (Самоучитель) ISBN ...»

Айк Харазян

Санкт-Петербург

«БХВ-Петербург»

УДК 004.438 Swift

ББК 32.973.26-018.1

Х20

Харазян А. А .

Х20 Язык Swift. Самоучитель. — СПб.: БХВ-Петербург, 2016. — 176 с.: ил. —

(Самоучитель)

ISBN 978-5-9775-3572-4

Книга предназначена для самостоятельного изучения Swift — нового языка программирования для iOS и OS X. Описана версия Swift 2.0. Материал построен по

принципу от более легкого к сложному, изложение сопровождается большим количеством листингов кода, для тестирования и отладки используется новая среда быстрой разработки Playground. Объяснены основы Swift, синтаксис языка и его особенности .

Описаны типы данных, условные выражения, циклы, массивы, функции, кортежи, базовые операторы и другие стандартные конструкции. Кратко даны основы объектноориентированного программирования. Подробно рассмотрены более сложные или специфические для Swift конструкции: перечисления, замыкания, опциональные типы, классы, структуры, встроенные и обобщенные типы, расширения, протоколы, расширенные операторы и др .

Для программистов УДК 004.438 Swift ББК 32.973.26-018.1

Группа подготовки издания:

Главный редактор Екатерина Кондукова Зам. главного редактора Евгений Рыбаков Зав. редакцией Екатерина Капалыгина Редактор Григорий Добин Компьютерная верстка Ольги Сергиенко Корректор Зинаида Дмитриева Дизайн обложки Марины Дамбиевой Подписано в печать 31.07.15 .

Формат 70100 /16. Печать офсетная. Усл. печ. л. 14,19 .



Тираж 1000 экз. Заказ № "БХВ-Петербург", 191036, Санкт-Петербург, Гончарная ул., 20 .

Первая Академическая типография "Наука" 199034, Санкт-Петербург, 9 линия, 12/28 © Харазян А. А., 2016 ISBN 978-5-9775-3572-4 © Оформление, издательство "БХВ-Петербург", 2016 Оглавление Введение

Для кого предназначена эта книга?

Какова польза от книги?

Структура книги

Тестируйте листинги кода!

Программа Apple для разработчиков

ЧАСТЬ I. ОСНОВЫ SWIFT

Глава 1. Swift: как он появился и с чего начать?

1.1. Как появился Swift?

1.2. Что нужно, чтобы начать разрабатывать на Swift?

1.3. Playground

1.4. Как создать новый документ Playground?

Глава 2. Особенности синтаксиса Swift

2.1. Swift — это C-подобный язык

2.2. Отсутствие заголовочных файлов

2.3. Точки с запятой ставить не обязательно

2.4. Набор символов

Выводы

Глава 3. Простые типы данных, переменные и константы

3.1. Переменные и константы

3.2. Вывод информации в консоль

3.3. Комментарии

3.4. Статическая типизация и вывод типов

3.5. Явное указание типов

3.6. Литералы

3.7. Числовые типы

3.7.1. Целые числа

3.7.2. Числа с плавающей точкой

3.7.3. Способы записи числовых типов

3.7.4. Преобразование числовых типов

4 Оглавление

3.8. Строки и символы

3.8.1. Конкатенация строк

3.8.2. Преобразование в строку

3.8.3. Интерполяция строк

3.9. Логические типы

3.10. Псевдонимы типов

Выводы

Глава 4. Базовые операторы

4.1. Оператор присваивания

4.2. Арифметические операторы

4.3. Составные операторы присваивания

4.4. Операторы инкремента и декремента



4.5. Операторы унарного минуса и унарного плюса

4.6. Операторы сравнения

4.7. Тернарный условный оператор

4.8. Операторы диапазона

4.9. Логические операторы

4.9.1. Логическое НЕ

4.9.2. Логическое И

4.9.3. Логическое ИЛИ

Выводы

Глава 5. Типы коллекций

5.1. Массивы

5.1.1. Объявление массива

5.1.2. Получение доступа к элементам массива

5.1.3. Добавление элементов в массив

5.1.4. Изменение элементов массива

5.1.5. Удаление элементов из массива

5.1.6. Итерация по массиву

5.2. Множества

5.2.1. Объявление множеств

5.2.2. Работа с множествами

5.2.3. Сочетание и сравнение множеств

5.3. Словари

5.3.1. Объявление словаря

5.3.2. Получение доступа к элементам словаря

5.3.3. Добавление элементов в словарь

5.3.4. Изменение элементов словаря

5.3.5. Удаление элементов из словаря

5.3.6. Итерация по словарю

Выводы

Глава 6. Ветвление потока

6.1. Условия

6.1.1. Условный оператор if

6.1.2. Оператор switch

Оглавление 5

6.2. Циклы

6.2.1. Циклы for

Стандартный цикл for

Цикл for-in

6.2.2. Цикл while

6.3. Управление потоком цикла

6.4. Оператор guard

6.5. Проверка на доступность API

Выводы

Глава 7. Функции

7.1. Объявление функции

7.2. Параметры

7.2.1. Внешние имена параметров

7.2.2. Параметры со значением по умолчанию

7.2.3. Сквозные параметры

7.2.4. Функции с переменным числом параметров

7.3. Возвращаемое значение функции

7.3.1. Функции с несколькими возвращаемыми значениями

7.4. Функции — объекты первого класса

7.4.1. Функции, принимающие параметры в виде функции

7.4.2. Функции, возвращающие функцию

7.4.3. Вложенные функции

Выводы

ЧАСТЬ II. УГЛУБЛЕННОЕ ИЗУЧЕНИЕ SWIFT

Глава 8. Опциональные типы

8.1. Опциональная привязка

8.2. Принудительное извлечение

8.3. Неявное извлечение

8.4. Опциональное сцепление

Выводы

Глава 9. Кортежи

9.1. Объявление кортежа

9.2. Получение доступа к элементам кортежа

9.2.1. Использование индекса элемента

9.2.2. Разложение кортежа

9.3. Именование элементов кортежа

9.4. Использование кортежей

9.4.1. Массовое присвоение

9.4.2. В циклах for-in

9.4.3. В качестве возвращаемого значения для функций

9.5. Опциональный кортеж

Выводы

Глава 10. Замыкания

10.1. Сокращенные имена параметров замыкания

6 Оглавление

10.2. Операторы-функции





10.3. Последующее замыкание

Выводы

Глава 11. Перечисления

11.1. Объявление перечислений

11.2. Перечисления и оператор switch

11.3. Связанные значения

11.4. Исходные значения

11.5. Вложенные перечисления

Выводы

Глава 12. Классы

12.1. Свойства, методы и объекты класса

12.2. Объявление классов

12.3. Свойства класса

12.3.1. Ленивые свойства

12.3.2. Вычисляемые свойства

12.3.3. Наблюдатели свойств

12.3.4. Вычисляемые переменные и наблюдатели для переменных

12.3.5. Свойства типа

12.4. Инициализаторы

12.4.1. Инициализатор по умолчанию

12.4.2. Инициализаторы с параметрами

12.4.3. Локальные и внешние имена параметров инициализатора

12.4.4. Проваливающиеся инициализаторы

12.4.5. Деинициализаторы

12.5. Методы

12.5.1. Создание методов

12.5.2. Методы типа

12.6. Индексаторы

12.6.1. Синтаксис индексаторов

12.6.2. Многомерные индексаторы

Выводы

Глава 13. Наследование

13.1. Переопределение

13.2. Наследование инициализаторов

13.3. Переопределение инициализаторов

13.4. Назначенные и удобные инициализаторы

13.5. Необходимые инициализаторы

Выводы

Глава 14. Автоматический подсчет ссылок

14.1. Принципы работы автоматического подсчета ссылок

14.2. Циклы сильных ссылок внутри объектов классов

14.3. Решение проблемы циклов сильных ссылок между объектами классов

14.3.1. Слабые ссылки

14.3.2. Ссылки без владельца

Выводы

Оглавление 7 Глава 15. Структуры

15.1. Типы-значения и ссылочные типы

15.2. Оператор идентичности

15.3. Свойства структур

15.4. Свойства типа для структур

15.5. Методы структур

15.6. Методы типа для структур

15.7. Инициализаторы структур

Выводы

Глава 16. Проверка типов и приведение типов

16.1. Проверка типов

16.2. Приведение типов

16.3. Проверка типов Any и AnyObject

16.3.1. Тип AnyObject

16.3.2. Тип Any

Выводы

Глава 17. Расширения

17.1. Расширение свойств

17.2. Расширение методов

17.3. Расширение инициализаторов

Выводы

Глава 18. Протоколы

18.1. Объявление протокола

18.2. Требования для свойств

18.3. Требования для методов

18.4. Требования для инициализаторов

18.5. Протоколы как типы

18.6. Соответствие протоколу через расширение

18.7. Наследование протоколов

18.8. Протоколы только для классов

18.9. Сочетание протоколов

18.10. Проверка объекта на соответствие протоколу

18.11. Расширения протоколов

Выводы

Глава 19. Обобщенные типы

19.1. Обобщенные функции

19.2. Обобщенные типы

19.3. Ограничения типов

Выводы

Глава 20. Обработка ошибок

Выводы

–  –  –

21.2. Операторы с переполнением

21.2.1. Переполнение значения

21.2.2. Потеря значения

21.3. Перегрузка операторов

21.4. Побитовые операторы

21.4.1. Побитовый оператор NOT

21.4.2. Побитовый оператор AND

21.4.3. Побитовый оператор OR

21.4.4. Побитовый оператор XOR

21.4.5. Побитовые операторы левого и правого сдвига

Выводы

Заключение

Изучайте фреймворки Apple

Вступайте в Apple’s Developer Program

Вперед, к новым высотам!

Введение 2 июня 2014 года на ежегодной конференции разработчиков WWDC компания Apple представила новый язык программирования Swift. С его помощью можно создавать приложения для iOS и OS X с еще большей легкостью, чем ранее. Swift сочетает в себе производительность и эффективность компилируемых языков программирования с простотой и интерактивностью популярных скриптовых языков .

Он был вдохновлен такими языками программирования, как JavaScript, Python и Ruby .

При создании языка Swift разработчики руководствовались тремя парадигмами:

быстрота;

современность;

надежность .

По словам Apple, некоторые алгоритмы, написанные на Swift, выполняются в разы быстрее, чем те же алгоритмы на Python. Этим она утверждает, что код, написанный на Swift, не только лаконичен и легко читаем, но и может конкурировать по скорости с мощными скриптовыми языками. Современность языка демонстрируют особенности, перенятые из скриптовых языков программирования, — такие как интерактивность и простота восприятия. Разработчики очень тщательно подошли к реализации возможностей, которые помогают противостоять появлению ошибок, тем самым делая код более надежным. Например, переменные всегда должны быть объявлены перед их использованием, а массивы и целые числа проверяются на перегрузку. Память очищается автоматически, а технология опциональных типов позволяет исключить возможные ошибки с отсутствием значения .

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

10 Введение Для кого предназначена эта книга?

Необходимость изучения нового языка программирования может сильно пугать новичков. Но эта книга прекрасно подойдет даже тем, кто никогда не использовал языки программирования C, C++ или Objective-C. И хотя книга не рассчитана на тех, кто знакомится с языками программирования впервые, но, все же, в начале каждой главы даны краткие объяснения основ программирования, касающиеся освещаемой темы .

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

Изложение каждой новой темы в книге сопровождается подробными примерами на языке Swift. А сами главы построены по принципу последовательного изучения материала от более легкого к более сложному. Это облегчает поиск нужных глав для опытных разработчиков и помогает новичкам изучать Swift постепенно .

Какова польза от книги?

В книге рассмотрены все особенности языка Swift, которые в будущем помогут вам при разработке приложений и игр под iOS и OS X. Изучив материал книги, вы сможете полностью разбираться в коде, написанном на Swift, а также самостоятельно разрабатывать алгоритмы на этом языке. Знания, изложенные в книге, лежат в основе фреймворков Cocoa и Cocoa Touch, служащих для разработки приложений и игр под iPhone, iPad, Mac и т. д. Так что, изучив техники языка программирования Swift, вы смело можете приступить к изучению API и фреймворков и разработке приложений для iOS и OS X .

Структура книги Книга состоит из двух больших частей .

Часть I. Основы Swift. Первая часть книги знакомит читателя с тем, как реализованы в Swift стандартные структуры вроде циклов, условий и массивов. Она будет полезна для начинающих разработчиков, поскольку расскажет им об основах программирования. А опытным разработчикам эта часть даст понять, какие особенности есть в простых структурах Swift в отличие от других языков .

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

Введение 11 Тестируйте листинги кода!

Каждая глава книги сопровождается большим количеством листингов кода. Они позволяют лучше понять некоторые алгоритмы и операции. Мы рекомендуем вам по ходу изучения материала набивать предлагаемые программные коды непосредственно вручную. Так вы легче запомните синтаксис языка Swift, поскольку будете учиться на своих ошибках .

А помогут вам в этом уже упомянутые песочницы Playground — новый тип документа Xcode, который появился в его шестой версии, вместе с языком Swift .

Playground представляет собой самостоятельный файл, куда можно вписать несколько строк кода, которые будут тут же выполнены с выводом полученного результата. Более подробно о Playground рассказано в главе 1 .

Программа Apple для разработчиков Чтобы получать последнее программное обеспечение для разработчиков и иметь возможность публиковать свои приложения в магазине цифровой дистрибьюции AppStore, вы, вероятно, захотите стать членом Apple Developer Programs.

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

https://developer.apple.com/programs .

I ЧАСТЬ

–  –  –

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

–  –  –

Swift: как он появился и с чего начать?

1.1. Как появился Swift?

Язык для человека является универсальным средством коммуникации и обмена информацией. С его помощью мы можем высказать наши мысли друзьям, членам семьи или коллегам по работе. И компьютерные языки программирования в этом плане также не являются исключением. Принцип выражения своих мыслей в них тот же. Только на этот раз мы высказываем их компьютеру .

Языки программирования, подобно человеческим языкам, существуют в разных формах и со временем эволюционируют и совершенствуются. Главной задачей языков программирования изначально являлась необходимость взаимодействовать с инструкциями компьютера, чтобы задать набор определенных действий, которые мы хотим от него получить .

Опытные пионеры компьютерной эпохи знают, что центральный процессор компьютера понимает только набор инструкций, состоящий из нулей и единиц. Чтобы разработчики могли разрабатывать свой код на более понятном им языке, чем нули и единицы, существуют программы-компиляторы, которые переводят код, написанный на определенном языке программирования, в инструкции для процессора, состоящие из тех самых нулей и единиц .

Компромисс между возможностями языка программирования и его производительностью обеспечили такие языки программирования, как C и C++. Но пока языки С и C++ распространялись на все большее количество платформ, Apple решила пойти иным путем и разработала язык Objective-C. Построенный на основе C, Objective-C сочетал в себе мощь широко используемого языка программирования с объектноориентированными методологиями. На протяжении многих лет Objective-C являлся основой для разработки программ для компьютеров Macintosh и iOS-устройств .

Однако, несмотря на производительность и простоту, Objective-C носил с собой весь багаж, наследованный от С. Для разработчиков, которые разбираются в C, это не вызывает трудностей. Но новички жаловались, что Objective-C труден для понимания и разработки .

16 Часть I. Основы Swift Apple прислушалась к мольбам начинающих разработчиков и снизила для них входной барьер, выпустив язык программирования Swift. Теперь писать программы получается намного легче и понятнее .

1.2. Что нужно, чтобы начать разрабатывать на Swift?

Прежде всего, мы настоятельно рекомендуем писать листинги кода вместе с нами .

Это позволяет лучше запомнить конструкции языка Swift. Для того чтобы вместе с нами писать и запускать код Swift, вам понадобится компьютер Macintosh c операционной системой не ниже OS X 10.9 Mavericks или 10.10 Yosemite. Вам также потребуется Xcode 7, в котором содержится компилятор Swift и его среда разработки .

1.3. Playground Во время разработки какого-либо приложения нам часто хочется иметь возможность быстро протестировать несколько строчек кода. Обычно для этого приходится создавать новый проект, который формирует новую папку, генерирует конфигурационные файлы, пишет классы по умолчанию и т. д. И все это делается лишь для того, чтобы мы могли протестировать несколько кодовых строк .

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

Быстрое создание «площадки для тестирования» — не единственное преимущество Playground. Главным его отличием от проектов является немедленное выполнение любой написанной строки кода с выводом результатов выполнения этой строки .

Они автоматически обновляются и выполняются по мере изменения документа .

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

1.4. Как создать новый документ Playground?

Чтобы создать новый файл Playground, нам нужно запустить Xcode 7. Сразу после запуска откроется окно приветствия, содержащее меню, первым пунктом которого будет: Get started with a playground (рис. 1.1). Нам нужно выбрать именно этот пункт .

В результате откроется окно с предложением выбора имени для нового документа и типа платформы для разработки: OS X или iOS (рис. 1.2) .

Глава 1. Swift: как он появился и с чего начать? 17

–  –  –

Указав имя и платформу, мы можем нажать кнопку Next и переместиться в диалоговое окно выбора места для сохранения нашего Playground. Выберите нужное местонахождение и нажмите на кнопку Create, чтобы окончательно его создать .

Если мы все правильно сделали, то должны увидеть новое окно Playground (рис. 1.3) .

Рис. 1.3. Новое окно Playground

Теперь мы можем писать свои первые строчки кода на Swift. Левая область окна Playground предназначена для нашего кода, а правая — отображает результат выполнения этого кода .

В правой области отображается также любая полезная информация о значениях, содержащихся в переменных, о количествах итераций циклов, о возвращаемых значениях функций. Эти значения носят информативный характер и не совпадают со значениями, которые выводит наша программа. Для того чтобы узнать, какие данные выводит программа, нужно в правом верхнем углу окна найти три кнопки, отвечающие за дополнительные панели с левой, с нижней и правой Глава 1. Swift: как он появился и с чего начать? 19 его сторон. Нажать нужно на центральную кнопку, отвечающую за консольный вывод (рис. 1.4) .

Теперь мы можем приступить к изучению Swift. Пишите и тестируйте листинги кода вместе с нами!

–  –  –

Особенности синтаксиса Swift Синтаксис языка программирования — это набор правил, определяющих, как пишутся программы на этом языке. Он определяет, какие символы будут употреблены для обозначения переменных, как нужно разделять инструкции друг от друга, какие конструкции употребляются в том или ином случае и т. д .

2.1. Swift — это C-подобный язык Первой особенностью синтаксиса языка Swift является его принадлежность к группе C-подобных языков программирования. Разработчики, которые уже знакомы с C-подобными языками, найдут в Swift много знакомых конструкций. Блоки кода все также разделяются парой фигурных скобок, а циклы, условия и функции содержат знакомые нам ключевые слова if, else, for, return. Но, в отличие от Objective-C, мы не можем взять код, написанный на C, и вставить его в программу, написанную на Swift. Если в Objective-C мы могли так сделать, и все бы работало, то со Swift это не пройдет. Это означает, что Swift — заново написанный язык, а не просто надстройка над языком C .

2.2. Отсутствие заголовочных файлов Следующей особенностью синтаксиса Swift является отсутствие заголовочных файлов. Программа, написанная на Swift, теперь не нуждается в отдельно написанных для него заголовочных файлах. Исполняемые файлы программы теперь имеют только один формат:.swift .

2.3. Точки с запятой ставить не обязательно Одной из особенностей языка Swift является отсутствие необходимости ставить точку с запятой после каждого выражения. Теперь компилятор сам понимает, когда выражение закончилось. Но возможность использовать точки с запятой есть. Так, Глава 2. Особенности синтаксиса Swift 21 в тех случаях, когда нам нужно записать несколько выражений в одну строку, мы должны после каждого выражения поставить точку с запятой. Либо, если вы в прошлом программировали на каком-нибудь C-подобном языке и по привычке ставите после каждого выражения точку с запятой, то можете не отказываться от этой привычки. Это означает, что вставлять точки с запятой не обязательно, но при желании вы их использовать можете .

2.4. Набор символов При написании программ в Swift можно использовать символы Unicode. Но, в отличие от других языков программирования, где символы Unicode допускается употреблять только для строк и символов, в Swift символы Unicode можно использовать в названиях переменных, функций и других объектов. То есть, например, писать названия переменных на русском языке не возбраняется .

Кроме стандартных символов UTF-8, Swift также поддерживает UTF-16 и UTF-32 .



Этот факт сильно расширяет набор допустимых символов. Мы можем писать названия для переменных даже символами «эмодзи»1 .

Выводы Swift — заново написанный язык программирования, который относится к семейству C-подобных языков .

Исходный код, написанный на Swift, теперь имеет только один тип:.swift, и не нуждается в заголовочных файлах .

В конце каждой инструкции не обязательно ставить точку с запятой .

Переменные, функции и другие объекты можно писать любыми символами Unicode .

Эмодзи — язык идеограмм и смайликов, используемый в электронных сообщениях и на веб-страницах .

ГЛАВА Простые типы данных, переменные и константы Самым простым понятием в языках программирования являются переменные. Они позволяют хранить нужные нам значения в памяти компьютера. В Swift, наряду с переменными, существуют еще и константы. Если в переменных значения могут быть изменены, то значения констант после первого присвоения изменить невозможно .

Употребление констант в Swift сильно отличается от их употребления в других языках программирования. Если в других языках мы редко применяли константы, то в Swift константы используются так же часто, как и переменные. Apple рекомендует употреблять константы везде, где это возможно. Например, если нам нужно хранить информацию о дате рождения человека, то, по рекомендациям Apple, это значение лучше всего хранить внутри константы. Поскольку дата рождения человека не должна никогда изменяться, то использование константы позволит обезопасить это значение от случайного изменения. Кроме того, с использованием констант компилятор позволяет генерировать более оптимизированный код .

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

3.1. Переменные и константы Давайте начнем с простой конструкции присвоения переменной значения. В Swift переменные объявляются через ключевое слово var. Название переменной мы можем придумать любое, но оно не должно начинаться с цифры:

var myHome = "Earth" Эта строчка кода является законченной программой. Больше не нужно подключать дополнительные библиотеки и писать всю программу внутри глобальной функции main, как мы это делали в Objective-С .

Глава 3. Простые типы данных, переменные и константы 23 В приведенном примере мы решили использовать название переменной myHome .

Apple советует при написании имен для переменных, констант и других объектов придерживаться горбатой нотации. Согласно ее принципам, мы должны следовать правилу: если название состоит из нескольких слов, мы записываем всех их вместе, но каждое новое слово пишем с большой буквы. По-английски эту нотацию называют CamelCase (верблюжий стиль). Она перекочевала в Swift из Objective-C, где мы в таком же стиле писали названия переменных, функций и т. д. Следует заметить, что горбатая нотация не обязательна для соблюдения, но Apple рекомендует это делать, чтобы код был одинаково читаем для всех разработчиков .

Как мы отмечали в предыдущей главе, при задании имен переменных и других объектов у Swift, по сравнению с Objective-C, имеется одна интересная особенность — имена переменных могут состоять из любых Unicode-символов. А это означает, что названия переменных в Swift мы можем писать также и на русском языке. Да что там говорить — даже символ торговой марки (®) является в Swift приемлемым названием для переменной! А поскольку Swift поддерживает не только

UTF-8, но еще UTF-16 и UTF-32, то мы можем использовать в названии переменных и символы «эмодзи»:

var = "Earth" Если вы заметили, то после приведенного выражения мы не поставили в конце точку с запятой. Действительно, в Swift, как уже и отмечалось ранее, не обязательно ставить точку с запятой после каждой строчки.

Единственный случай, когда точку с запятой все же нужно ставить, — это когда мы пишем несколько выражений в одну строчку, например:

var myHome = "Earth"; var myShip = "Enterprise";

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

Константы объявляются через ключевое слово let:

let myName = "James Kirk" В отличие от других языков программирования, в Swift константы используются так же часто, как и переменные. Суть констант проста: когда у нас есть значение, которое никогда не будет изменяться (например, чья-то дата рождения), то настоятельно рекомендуется объявить ее в виде константы .

На первый взгляд вам может показаться непонятным, почему в Swift присутствуют и константы, и переменные? Разве переменная не предоставляет больше возможностей, чем константа? Это хороший вопрос. Ответ на него скрыт в основе работы компилятора. Компилятор в Swift может лучше оптимизировать код, когда знает, что значение, записанное в памяти, никогда не будет изменяться. Поэтому всегда используйте константы там, где вы точно знаете, что значение меняться не будет .

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

24 Часть I. Основы Swift

3.2. Вывод информации в консоль В наших примерах мы часто будем пользоваться функцией print(_:). Она выводит в консоль Swift информацию, которую мы передаем ей внутри скобок. Эта информация окажется очень полезна при тестировании функционала нашего кода .

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

var myHome = "Earth" print(myHome)

Эти строки кода выведут в консоль слово "Earth" .

3.3. Комментарии По мере увеличения количества строк кода нам иногда становится сложно найти нужный кусок. Или бывает так, что мы смотрим на код, написанный нами неделю назад, и не понимаем, что мы тут написали .

Чтобы решить проблемы такого характера, в языках программирования существуют комментарии — блоки текста, которые игнорируются компилятором. Они созданы для нас, чтобы мы могли делать в коде для себя пометки. Например, написав сложный код, мы можем добавить комментарий по поводу его работы, чтобы будущие разработчики не мучались с изучением этого куска кода, а сразу поняли, в чем здесь дело. Составление комментариев является хорошей практикой для любого языка программирования, т. к. они упрощают повторное восприятие информации и помогают лучше организовать код .

В Swift комментарии пишутся после двойного знака косой черты (слеша): //.

Увидев в коде сочетание двух слешей, компилятор проигнорирует все, что написано правее такого сочетания на этой строке:

// эта чаcть кода будет проигнорирована компилятором Кроме однострочных комментариев, в Swift можно писать еще и многострочные комментарии. Для них нам нужно использовать знак косой черты со знаком звездочки (астериска): /* — для начала многострочного комментария, и обратное сочетание: */ — для его конца:

/* Эти строки кода будут проигнорированы компилятором */

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

Глава 3. Простые типы данных, переменные и константы 25 /* Начало первого многострочного комментария /* Начало второго многострочного комментария Конец второго многострочного комментария */ Конец первого многострочного комментария */ Вложенные многострочные комментарии были введены в Swift для облегчения ситуаций, когда нам нужно закомментировать большой фрагмент кода, в котором могут встречаться другие многострочные комментарии .

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

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

// Напечатает в консоли слово "Earth" Иногда мы также можем воспользоваться условным обозначением возвращения какого-либо значения (=):

// = 34 Такая строка комментария в наших примерах условно будет означать, что функция или какая-нибудь другая конструкция возвращает число 34 .

3.4. Статическая типизация и вывод типов Чтобы классифицировать в языках программирования разные значения, их делят по типу. Когда компилятор знает, какой тип будет храниться в переменной или константе, то он выделит под нее ячейку памяти соответствующего размера. Это означает, что, например, переменная со строковым значением "Hello World" и переменная, хранящая числовое значение 23, в памяти занимают разное количество памяти .

По способу проверки компилятором типов переменных или констант языки программирования делятся на языки со статической типизацией и языки с динамической типизацией. При статической типизации типы переменных устанавливаются на момент компиляции. То есть, если переменной не указан тип, во время компиляции программа выдаст ошибку. При динамической типизации типы переменных выясняются во время выполнения программы — т. е. указывать тип каждой переменной не нужно .

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






Похожие работы:

«Министерство образования и науки Российской Федерации ФГАОУ ВПО "Российский государственный профессионально-педагогический университет" В. П. Строшков, Ю. И. Категоренко ЭЛЕКТРОХИМИЧЕСКОЕ ФОРМООБРАЗОВАНИЕ ИНСТРУМЕНТА, ЛИТЕЙНОЙ ОСНАСТКИ, ДЕТАЛЕЙ МАШИН Учебное пособие Допущено Учебно-методическим объединением по профессионально-п...»




 
2019 www.mash.dobrota.biz - «Бесплатная электронная библиотека - онлайн публикации»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.