Swift ios что это
Swift. Язык программирования с открытым кодом. Мощь, простота и потрясающие приложения.
Swift — это надёжный и интуитивно понятный язык программирования от Apple, при помощи которого можно создавать приложения для iOS, Mac, Apple TV и Apple Watch. Он предоставляет разработчикам небывалую свободу творчества. Благодаря этому простому и удобному языку с открытым кодом вам достаточно просто интересной идеи, чтобы создать нечто невероятное.
Разработчики уже пользуются
удивительными возможностями Swift.
Swift — это быстрый и эффективный язык программирования с откликом в реальном времени, который легко можно вставить в готовый код Objective-C. Теперь разработчики могут не только писать более надёжные и безопасные коды, но также экономить время и создавать приложения с расширенными возможностями.
Прекрасное приложение в Swift. Простота использования и отклик в реальном времени — вот почему VSCO выбрали Swift, чтобы создать новую версию своего фотоприложения для iOS.
Превосходные приложения,
разработанные на языке Swift.
Всё больше разработчиков встраивают код Swift в свои приложения. А некоторые даже создают в Swift совершенно новые приложения.
Производительность выше. Приложения лучше.
Приложения Swift превосходят ожидания. Например, обычный алгоритм поиска выполняется в Swift гораздо быстрее.
В графе с использованием алгоритма поиска в глубину найдено 10 000 целых чисел*
Язык Swift добавлен
в учебную программу.
Потенциал Swift оценили учебные заведения по всему миру. Они используют Swift и Xcode на Mac для обучения, обеспечивая своих студентов лучшими инструментами для создания приложений. А с бесплатной учебной программой от Apple «Разработка на языке Swift» даже новички легко переходят от основ программирования к профессиональной разработке.
Университеты, включившие язык Swift в учебную программу
Swift повсюду.
И теперь открыт для всех.
Swift бесплатно доступен для использования разработчиками, преподавателями и студентами по лицензии на распространение ПО с открытым исходным кодом Apache 2.0. Мы предоставляем двоичные файлы для OS X и Linux, которые позволяют компилировать код для iOS, OS X, watchOS, tvOS и Linux. А чтобы ускорить развитие и превращение Swift в ещё более мощный язык, мы создали новое сообщество, где пользователи могут напрямую вносить свой вклад в исходный код Swift.
Познакомьтесь со Swift.
Главная книга
Загрузите учебник Язык программирования Swift из Apple Books Store бесплатно. Узнайте, как благодаря Swift процесс программирования становится более удобным, гибким и увлекательным.
Xcode
Xcode — это приложение для Mac, предназначенное для разработки других приложений для Mac и iOS. В Xcode есть все инструменты, необходимые для создания потрясающих приложений. Его можно загрузить бесплатно из Mac App Store.
Веб-сайт для разработчиков
Получите подробную техническую информацию и ознакомьтесь с полным обзором языка Swift. Посмотрите блог для разработчиков, чтобы быть в курсе последних новостей. У вас также есть бесплатный доступ к отличным ресурсам: руководствам, видео и примерам кода.
Swift. A powerful open language that lets everyone build amazing apps.
Swift is a robust and intuitive programming language created by Apple for building apps for iOS, Mac, Apple TV, and Apple Watch. It’s designed to give developers more freedom than ever. Swift is easy to use and open source, so anyone with an idea can create something incredible.
Developers are doing
great things with Swift.
Swift is a fast and efficient language that provides real-time feedback and can be seamlessly incorporated into existing Objective-C code. So developers are able to write safer, more reliable code, save time, and create even richer app experiences.
A beautiful app using Swift. Thanks to its ease of use and real-time feedback, VSCO chose Swift to build the latest version of their photography app for iOS.
Great apps
built using Swift.
More and more developers are incorporating Swift code into their apps. And some are even building all-new apps entirely in Swift.
Better performance
equals better apps.
Swift apps more than live up to the name. For instance, a common search algorithm completes much faster using Swift.
10,000 integers found in a graph
using depth-first search algorithm*
Educators are adding Swift
to their curriculum.
Developers aren’t the only ones who’ve experienced the potential of Swift. Universities and academic institutions around the world teach with Swift and Xcode on Mac, empowering their students with the best tools to build amazing apps. And with Apple’s free Develop in Swift curriculum, the transition from introductory coding to app development with Swift has never been easier.
Colleges and universities that are incorporating Swift into their courses
Swift is everywhere.
And now it’s open for everyone.
Swift is free and open source, and it’s available to a wide audience of developers, educators, and students under the Apache 2.0 open source license. We’re providing binaries for macOS and Linux that can compile code for iOS, macOS, watchOS, tvOS, and Linux. And to help Swift grow into an even more powerful language, we created a community where users can contribute directly to the Swift source code.
Get started with Swift.
The Definitive Book
Download The Swift Programming Language from the Apple Books Store free. Learn how Swift makes programming easier, more flexible, and more fun.
Xcode
Xcode is the Mac app used to build every other Mac app and every iOS app, too. It has all the tools you need to create an amazing app experience. And it’s available as a free download from the Mac App Store.
Developer Website
Get detailed technical information and an advanced overview of Swift. Check out the developer blog and stay up to date on the latest news. And enjoy free access to great resources like guides, videos, and sample code.
Everyone Can Code
A new approach to coding that gives everyone the power to learn, write, and teach code.
Swift Playgrounds
Learn serious code on your iPad. In a seriously fun way.
iOS с нуля вместе с Swift. В двух словах о Swift
Apple представила язык программирования Swift во время ежегодной конференции разработчиков в 2014 году, что было полной неожиданностью для сообщества разработчиков. Компания настроена серьезно по отношению к Swift, это не является очередным «игрушечным проектом». Цель Swift — стать основой для следующего поколения приложений на платформе Apple.
Требования
Программирование
Естественно, прояснить основные принципы в программировании и изучить Swift не представляется возможным в рамках одной или двух статей. Так что я предполагаю, что вы уже имеете некоторый опыт в программировании. Ruby, PHP или JavaScript являются хорошей отправной точкой для изучения Swift. Если у вас был ранее опыт web программирования, тогда после прочтения двух последующих статей у вас не должно возникнуть проблем в изучении основ Swift.
Swift
В двух последующих статьях я расскажу о «песочнице», новой фиче, появившейся в Xcode 6. Также мы рассмотрим основные структуры языка программирования Swift, такие как переменные, константы, типы данных, включая множества, массивы и словари.
Также вы изучите основы, касающиеся классов и структур. В следующей статье мы углубимся в изучение замыканий, функций, протоколов и контроле доступа. Всё это должно дать достаточно для понимания языка, чтобы успешно пройти оставшиеся статьи в данном цикле уроков.
Objective-C
Строго говоря, C и Objective-C не являются обязательными для изучения, если вы заинтересованы в разработке для iOS платформы. При этом, множество фреймворков, которые мы будем использовать для разработки iOS приложений, написаны на C и Objective-C. Так что я все равно так или иначе буду говорить о C и Objective-C. Однако же не стоит переживать, я позабочусь о том, чтобы вы могли без труда понимать всё, что необходимо для того, чтобы держать вас на тропе к вашей цели — становлению iOS разработчиком.
Xcode и Swift
На протяжении данной серии уроков мы будем использовать Xcode 7.1 и Swift 2.1. Если вы используете более раннюю версию Xcode, следует иметь ввиду, что вы не сможете работать со Swift 2.1. Swift продолжает стремительно меняться и синтаксис эволюционирует с каждой новой итерацией языка. Так что настоятельно рекомендуется все-таки использовать Xcode 7.1, который включает в себя Swift 2.1.
1. Песочница
В 2014 году Apple представила «песочницу» как часть Xcode 6. Песочница является отличным инструментом для изучения языка программирования Swift. С песочницей вы можете сфокусироваться непосредственно на коде, который вы пишете, вместо того, чтобы возиться с настройками проекта, файлами и папками.
Давайте же создадим песочницу, чтобы начать изучать основы Swift. Запустите Xcode 7.1 и выберите New > Playground. из пункта File в главном меню Xcode. Песочницы можно создавать под следующие платформы: OS X, iOS и tvOS. Выберите в пункте Platform значение iOS и назовите песочницу Swift in a Nutshell.
Укажите в Xcode расположение, куда вы хотите сохранить песочницу, и нажмите Create. На первый взгляд, песочница выглядит как простой файл с расширением .playground, но на самом деле это папка с кучкой файлов. К счастью, это совершенно не имеет для нас значения. С песочницей намного проще работать, чем с обычными проектами Xcode с массой файлов и папок.
Пользовательский интерфейс песочницы абсолютно чистый и простой. Слева находится редактор кода, а вывод — справа. Xcode уже наполнил песочницу тремя строчками кода. Первая строка должна выглядеть знакомо, если вы прочитали предыдущий урок.
2. Переменные и Константы
3. Типы данных
Swift определяет большое количество типов данных, но давайте взглянем на самые распространённые типы данных, с которыми мы будем далее встречаться.
Логические значения
Числа
На первый взгляд, это может показаться серьезной недоработкой языка Swift. Но на самом деле данное поведение является естественным для большинства языков со строгой типизацией. К счастью, решение данной проблемы весьма просто, насколько вы можете увидеть ниже.
Строки
Мы уже встречались с некоторыми строками в данном уроке. Строка — это не что иное, как просто последовательность символов. По сути, возможно получить доступ к коллекции символов как показано в примере ниже.
Коллекции
Any и AnyObject
4. Классы и структуры
Классы
Инициализация и изменение экземпляра класса Boat является совершенно элементарным, как вы можете видеть ниже. Вызов метода у экземпляра объекта также не является чем-то магическим. Основы работы с классами в Swift легки в понимании. Верно?
Структуры
Следующий пример демонстрирует наиболее важное различие между классами и структурами в Swift.
Следствия
Мы уже познакомились с наиболее распространёнными типами данных, определенными стандартной библиотекой языка Swift. Что я еще не упомянул в данном обсуждении, так это то, что каждый тип данных Swift, с которым мы имели дело до текущего момента, являлся структурой.
Каждый тип коллекций в Swift, например, является структурой. Каждый численный тип является структурой. Это важно знать и понимать, особенно если вы пришли из языка, который передаёт некоторые из этих типов по ссылке, такого как Ruby или Objective-C.
Больше различий
Более неочевидное различие между классами и структурами состоит в проверке типов во время исполнения. Вы можете проверить тип экземпляра класса во время исполнения, в то время как для экземпляров структур этого сделать нельзя.
5. Опциональные типы
Опциональные типы являются неотъемлемой частью языка программирования Swift. Давайте выясним, что же такое опциональные типы и почему они так важны. Переменная должна быть инициализирована до того, как она может быть использована. Давайте взглянем на следующий пример, чтобы понять, что это значит.
Если вы привыкли работать со строками в других языках программирования, вы можете быть удивлены, что компилятор выдаст ошибку. Посмотрим, о чём эта ошибка нам говорит.
Что такое «Опциональный тип»?
Swift использует опциональные типы чтобы инкапсулировать важную концепцию, имеет ли переменная или константа значение или не имеет. Это предельно просто в Swift. Для того, чтобы объявить переменную или константу как опциональную, мы добавляем знак вопроса к имени типа переменной или константы.
Принудительное разыменование
Важно знать, что опционал действительно содержит значение, прежде чем разыменовывать его. Если попытаться принудительно разыменовать опционал, у которого нет значения, Swift выбросит исключение и ваше приложение аварийно завершится.
Опциональное Связывание
Сначала мы проверяем, равняется ли str значению nil перед тем, как вывести её содержимое. В данном примере str не имеет значения. Это означает, что она не будет принудительно разыменована по случайности.
В Swift nil означает отсутствие какого бы то ни было значения. В то время, как в Objective-C nil применим только к объектам, в Swift nil может быть использован для любого типа.
Не пропустили ли вы Точку с запятой?
Заметили ли вы, что мы не использовали точек с запятой в примерах в данной статье? В Swift нет необходимости использовать точку с запятой, поскольку компилятор достаточно умён, чтобы понять, где заканчивается одно выражение и начинается другое. Если же вы очень скучаете по точкам с запятой, ничего страшного, их можно добавлять по своему усмотрению. Однако же, стоит помнить, что официальное руководство к языку не рекомендует использовать символы точки с запятой.
Заключение
Хотя мы лишь поверхностно изучили Swift в данном уроке, теперь вы имеете базовое представление о данном языке программирования. В следующем уроке мы рассмотрим другой ключевой компонент языка: замыкания и функции. Также мы обсудим протоколы и контроль доступа.
Если у вас остались какие-либо вопросы или комментарии, вы можете их оставить в комментариях ниже или связаться со мной через Twitter.
🍏 Самоучитель для начинающих: освойте основы Swift за 30 минут
itelenkov
Создать Playground
Запустим Xcode и создадим Playground. Назовем его “BasicSwift”:
File → New → Playground…
Переменные, константы, типы
Переменные обозначаются с помощью ключевого слова var
Чтобы объявить константу используется ключевое слово let
Множество типов фундаментально и чаще всего используется для объявления переменных. Забегая вперед скажу, что вы также можете создавать и свои собственные типы.
Мы не будет детально разбирать их все! Посвятим этой теме следующую 30-ти минутку.
Укажем тип нашей константы.
Интерполяция строк
Интерполяция – это способ объединить переменные и константы внутри строки.
Теперь присвоим переменной hello новое значение, и выведем в консоль.
Базовые операторы
Здесь все интуитивно. Предлагаю вам поэкспериментировать с ними самостоятельно и посмотреть на результаты.
Арифметические операторы
Операторы присвоения
Операторы сравнения
Операторы сравнения в качестве результата возвращают значения типа Bool
Логические операторы
Рассмотрим на примере:
Это еще не все операторы, которые существуют в Swift. Остальные мы рассмотрим в контексте целей их предназначения.
Коллекции
Array
Используйте квадратные скобки [], чтобы создавать массивы(Array) и словари(Dictionary).
Поскольку мы объявили массив как константу, то и все его значения становится не изменчивыми (immutable), как и его размер. А если мы объявим массив как переменную, то он будет изменчивым (mutable). Такое свойство называют изменчивостью коллекций (mutability of collection).
Dictionary
Пусть ключами (key) данного словаря будут номера объектов солнечной системы, а значениями (value) названия объектов. Поскольку звезда рождается первой, то будем считать, что ключ со значением 0 всегда указывает на звезду. Остальные объекты следуют в порядке по отношению к звезде.
Получим нашу родную планету и выведем ее в консоль.
Когда мы попытались вывести переменную в консоль, то получили предупреждение!
Давайте посмотрим какой именно тип приняла переменная.
Другим решением может быть присвоение переменной значения по умолчанию.
Пока опустим темы об опциональных типах и приведении типов ( type casting ).
В следующих статьях я расскажу о них подробней.
Кстати, если вы считаете, что Плутон это планета, то можете добавить её самостоятельно!
Чем отличаются массивы от словарей?
Управление потоком
Часто необходимо выполнять различный код базирующийся на определенных условий (conditions).
If. else
Инструкция if бывает трех форм.
Традиционное ее представление выглядит так:
Например, вы решили, что Плутон планета? Сейчас узнаем!
Рассмотрим такой случай. У нас есть данные, и мы не хотим перезаписать значение. Тогда необходимо проверить наличие данных, и только после добавить значение.
if. else if. else
switch
В самой простой форме switch выглядит так:
for-in
Цикл for-in упрощает перебор по последовательностям, т.к. массивы, словари, строки.
Синтаксис for-in выглядит так:
Цикл for-in исполняет инструкции определенное количества раз, пока мы не достигнем конца последовательности.
value – элемент последовательности на каждой итерации(iteration, повторении).
while
while имеет две формы.
Например, мы хотим пройти 10 000 шагов.
Внутри тела цикла мы увеличиваем переменную mySteps на один шаг.
Расчет факториала числа.
Здесь я вам предлагаю разобраться самостоятельно 😉
Вторая форма исполняет тело цикла прежде, чем вычислит условие. Следовательно, мы можем быть уверены что тело цикла выполняется один раз.
Функции
В Swift есть два типа функций:
Пользовательские(User-defined Function) и функции стандартной библиотеки (Standard Library Functions).
В скобках указываются параметры(parameters) функции.
Параметр – это значение определенного типа, принимаемое функцией.
returnType – указывает, какого типа значение возвращает функция
Чтобы исполнить функцию, ее необходимо вызвать (как мы уже делали это с print() ).
Функции без параметров
Как только функция завершится, управление потоком переходит к следующей инструкции после вызова функции.
Функции с параметрами
Например, разница между двумя значениями:
Каждый параметр функции состоит из метки аргумента и имени параметра. Имена параметров используются при реализации функции.
Метка аргумента используется при вызове функции.
По умолчанию параметры используют свое имя параметра в качестве метки аргумента(как в первом примере).
Если вам не нужна метка для аргумента, то напишите _ вместо конкретного названия метки для аргумента.
Заключение
Мы познакомились с фундаментальным синтаксисом языка программирования Swift. Рассмотрели основные операторы, научились объявлять переменные и объединять код в функции. В следующие полчаса разберем каждую тему более глубоко. На сегодня все! Playground доступен на Github.
Документация
Основы
Основы
Подобно C, Swift использует переменные для хранения и обращения к значениям по уникальному имени. Swift также широко использует переменные, значения которых не могут быть изменены. Они известны как константы, и являются гораздо более мощными, чем константы в C. Константы используются в Swift повсеместно, чтобы сделать код безопаснее и чище в случаях, когда вы работаете со значениями, которые не должны меняться.
В дополнение к знакомым типам, Swift включает расширенные типы, которых нет в Objective-C. К ним относятся кортежи, которые позволяют создавать и передавать группы значений. Кортежи могут возвращать несколько значений из функции как одно целое значение.
Swift также включает опциональные типы, которые позволяют работать с отсутствующими значениями. Опциональные значения говорят либо «здесь есть значение, и оно равно х», либо «здесь нет значения вообще». Опциональные типы подобны использованию nil с указателями в Objective-C, но они работают со всеми типами, не только с классами. Опциональные значения безопаснее и выразительнее чем nil указатели в Objective-C, и находятся в сердце многих наиболее мощных особенностей Swift.
Константы и переменные
Константы и переменные связывают имя (например, maximumNumberOfLoginAttempts или welcomeMessage ) со значением определенного типа (например, число 10 или строка «Hello» ). Значение константы не может быть изменено после его установки, тогда как переменной может быть установлено другое значение в будущем.
Объявление констант и переменных
Этот код можно прочесть как:
В этом примере максимальное количество доступных попыток входа объявлено как константа, потому что максимальное значение никогда не меняется. Счетчик текущего количества попыток входа объявлен как переменная, потому что это значение должно увеличиваться после каждой неудачной попытки входа.
Вы можете объявить несколько констант или несколько переменных на одной строке, разделяя их запятыми:
Заметка
Аннотация типов
Вы можете добавить обозначение типа, когда объявляете константу или переменную, чтобы иметь четкое представление о типах значений, которые могут хранить константы или переменные. Написать обозначение типа, можно поместив двоеточие после имени константы или переменной, затем пробел, за которым следует название используемого типа.
Двоеточие в объявлении значит «. типа. «, поэтому код выше может быть прочитан как:
Теперь переменной welcomeMessage можно присвоить любое текстовое значение, без каких либо ошибок:
Вы можете создать несколько переменных одного типа в одной строке, разделенной запятыми, с одной аннотацией типа после последнего имени переменной:
Заметка
Редко когда вам понадобится обозначать тип на практике. Когда вы даете начальное значение константе или переменной на момент объявления, Swift всегда может вывести тип, который будет использовать в константе или переменной. Это описано в Строгая типизация и Вывод типов. В примере welcomeMessage выше, не было присвоения начального значения, так что тип переменной welcomeMessage указывается с помощью обозначения типа вместо того, чтобы вывести из начального значения.
Название констант и переменных
Вы можете использовать почти любые символы для названий констант и переменных, включая Unicode-символы:
Заметка
Если вам нужно объявить константу или переменную тем же именем, что и зарезервированное слово Swift, то вы можете воспользоваться обратными кавычками (`) написанными вокруг этого слова. Однако старайтесь избегать имен совпадающих с ключевыми словами Swift и используйте такие имена только в тех случаях, когда у вас абсолютно нет выбора.
Вы можете изменить значение переменной на другое значение совместимого типа. В примере ниже значение friendlyWelcome изменено с “Hello!” на “Bonjour!” :
В отличие от переменных, значение константы не может быть изменено, после того, как было установлено. Если вы попытаетесь его изменить, то будет выведена ошибка компиляции:
Печать констант и переменных
Вы можете напечатать текущее значение константы или переменной при помощи функции print(_:separator:terminator:) :
Swift использует интерполяцию строки для включения имени константы или переменной в качестве плейсхолдера внутри строки, что подсказывает Swift подменить это имя на текущее значение, которое хранится в этой константе или переменной. Поместите имя константы или переменной в круглые скобки, а затем добавьте обратный слеш ( \ ) перед открывающей скобкой:
Заметка
Все опции, которые вы можете использовать в интерполяции строки вы сможете найти в разделе «Интерполяция строк».
Комментарии
Используйте комментарии, чтобы добавить неисполняемый текст в коде, как примечание или напоминание самому себе. Комментарии игнорируются компилятором Swift во время компиляции кода.
Комментарии в Swift очень похожи на комментарии в C. Однострочные комментарии начинаются с двух слешей ( // ):
Вы также можете написать многострочные комментарии, которые начинаются со слеша и звездочки ( /* ) и заканчиваются звездочкой, за которой следует слеш ( */ ):
В отличие от многострочных комментариев в C, многострочные комментарии в Swift могут быть вложены в другие многострочные комментарии. Вы можете написать вложенные комментарии, начав многострочный блок комментариев, а затем, начать второй многострочный комментарий внутри первого блока. Затем второй блок закрывается, а за ним закрывается первый блок:
Вложенные многострочные комментарии позволяют закомментировать большие блоки кода быстро и легко, даже если код уже содержит многострочные комментарии.
Точки с запятой
В отличие от многих других языков, Swift не требует писать точку с запятой ( ; ) после каждого выражения в коде, хотя вы можете делать это, если хотите. Однако точки с запятой требуются, если вы хотите написать несколько отдельных выражений на одной строке:
Целые числа
Границы целых чисел
Вы можете получить доступ к минимальному и максимальному значению каждого типа целого числа с помощью его свойств min и max :
Тип значения этих свойств соответствует размеру числа (в примере выше этот тип UInt8 ) и поэтому может быть использован в выражениях наряду с другими значениями того же типа.
Заметка
Числа с плавающей точкой
Заметка
Double имеет точность минимум 15 десятичных цифр, в то время как точность Float может быть всего лишь 6 десятичных цифр. Соответствующий тип числа с плавающей точкой используется в зависимости от характера и диапазона значений, c которыми вы должны работать в коде. В случаях, где возможно использование обоих типов, предпочтительным считается Double.
Строгая типизация и Вывод типов
Поскольку Swift имеет строгую типизацию, он выполняет проверку типов при компиляции кода и отмечает любые несоответствующие типы как ошибки. Это позволяет в процессе разработки ловить и как можно раньше исправлять ошибки.
Проверка типов поможет вам избежать ошибок при работе с различными типами значений. Тем не менее, это не означает, что при объявлении вы должны указывать тип каждой константы или переменной. Если вы не укажете нужный вам тип значения, Swift будет использовать вывод типов, чтобы вычислить соответствующий тип. Вывод типов позволяет компилятору вывести тип конкретного выражения автоматически во время компиляции, просто путем изучения значения, которого вы ему передаете.
Благодаря выводу типов, Swift требует гораздо меньше объявления типов, чем языки, такие как C или Objective-C. Константам и переменным все же нужно присваивать тип, но большая часть работы с указанием типов будет сделана за вас.
Точно так же, если вы не указали тип для литерала с плавающей точкой, Swift делает вывод, что вы хотите создать Double :
Swift всегда выбирает Double (вместо Float ), когда выводит тип чисел с плавающей точкой.
Если объединить целые литералы и литералы с плавающей точкой в одном выражении, в этом случае тип будет выводиться как Double :
Литеральное значение 3 не имеет явного типа само по себе, так что соответствующий тип Double выводится из наличия литерала с плавающей точкой как часть сложения.
Числовые литералы
Числовые литералы могут быть написаны как:
Все эти литералы целого числа имеют десятичное значение 17 :
Литералы с плавающей точкой могут быть десятичными (без префикса) или шестнадцатеричными (с префиксом 0x ). Они всегда должны иметь число (десятичное или шестнадцатеричное) по обе стороны от дробной точки. Они также могут иметь экспоненту, с указанием в верхнем или нижнем регистре е для десятичных чисел с плавающей точкой, или в верхнем или нижнем регистре р для шестнадцатеричных чисел с плавающей точкой.
Все эти числа с плавающей точкой имеют десятичное значение 12.1875 :
Числовые литералы могут содержать дополнительное форматирование, чтобы их было удобнее читать. Целые числа и числа с плавающей точкой могут быть дополнены нулями и могут содержать символы подчеркивания для увеличения читабельности. Ни один тип форматирования не влияет на базовое значение литерала:
Преобразования числовых типов
Используйте Int для всех целочисленных констант и переменных в коде, даже когда они неотрицательны. Использование стандартного типа целых чисел в большинстве случаев означает, что ваши целочисленные константы и переменные будут совместимы в коде и будут соответствовать типу, выведенному из целочисленного литерала.
Используйте другие типы целых чисел, только если вам это действительно нужно, например, когда используются данные с заданным размером из внешнего источника, или для производительности, использования памяти или других важных оптимизаций. Использование типов с определенным размером в таких ситуациях помогает уловить случайное переполнение значения и неявно задокументированные данные, используемые в коде.
Преобразования целых чисел
Поскольку каждый числовой тип может хранить разный диапазон значений, в зависимости от конкретного случая вам придется обращаться к преобразованию числовых типов. Этот подход предотвращает скрытые ошибки преобразования и помогает сделать причину преобразования понятной.
Преобразования целых чисел и чисел с плавающей точкой
Преобразование между целыми числами и числами с плавающей точкой должно происходить явно:
Заметка
Псевдонимы типов
Псевдонимы типов полезны, когда вы хотите обратиться к существующему типу по имени, которое больше подходит по контексту, например, когда вы работаете с данными определенного размера из внешнего источника:
После того как вы один раз задали псевдоним типа, вы можете использовать псевдоним везде, где вы хотели бы его использовать
Логические типы
Логические значения очень полезны когда вы работаете с условными операторами, такими как оператор if :
Условные операторы, такие как оператор if детально рассматриваются в главе Управление потоком.
Строгая типизация Swift препятствует замене значения Bool на не логическое значение. Следующий пример выведет ошибку компиляции:
Тем не менее, альтернативный пример ниже правильный:
Как в других примерах строгой типизации в Swift, этот подход предотвращает случайные ошибки и гарантирует, что замысел определенной части кода понятен.
Кортежи
Кортежи группируют несколько значений в одно составное значение. Значения внутри кортежа могут быть любого типа, то есть, нет необходимости, чтобы они были одного и того же типа.
В данном примере (404, «Not Found») это кортеж, который описывает код HTTP статуса. Код HTTP статуса — особое значение, возвращаемое веб-сервером каждый раз, когда вы запрашиваете веб-страницу. Код статуса 404 Not Found возвращается, когда вы запрашиваете страницу, которая не существует.
Чтобы передать код статуса, кортеж (404, «Not Found») группирует вместе два отдельных значения Int и String : число и понятное человеку описание. Это может быть описано как «кортеж типа (Int, String) «.
Вы можете разложить содержимое кортежа на отдельные константы и переменные, к которым можно получить доступ привычным способом:
Если вам нужны только некоторые из значений кортежа, вы можете игнорировать части кортежа во время разложения с помощью символа подчеркивания ( _ ):
В качестве альтернативы можно получать доступ к отдельным частям кортежа, используя числовые индексы, начинающиеся с нуля:
Вы можете давать имена отдельным элементам кортежа во время объявления:
Когда вы присвоили имя элементу кортежа, вы можете обратиться к нему по имени:
Заметка
Кортежи полезны для временной группировки связанных значений. Они не подходят для создания сложных структур данных. Если ваша структура данных, вероятно, будет выходить за рамки временной структуры, то такие вещи лучше проектируйте с помощью классов или структур, вместо кортежей. Для получения дополнительной информации смотрите главу Классы и структуры.
Опциональные типы (опционалы)
Опциональные типы используются в тех случаях, когда значение может отсутствовать. Опциональный тип подразумевает, что возможны два варианта: или значение есть, и его можно извлечь из опционала, либо его вообще нет.
Заметка
В C или Objective-C нет понятия опционалов. Ближайшее понятие в Objective-C это возможность вернуть nil из метода, который в противном случае вернул бы объект. В этом случае nil обозначает «отсутствие допустимого объекта». Тем не менее, это работает только для объектов, и не работает для структур, простых типов C, или значений перечисления. Для этих типов, методы Objective-C, как правило, возвращают специальное значение (например, NSNotFound ), чтобы указать отсутствие значения. Этот подход предполагает, что разработчик, который вызвал метод, знает, что есть это специальное значение и что его нужно учитывать. Опционалы Swift позволяют указать отсутствие значения для абсолютно любого типа, без необходимости использования специальных констант.
В приведенном ниже примере используется метод Int() для попытки преобразовать String в Int :
Мы можем установить опциональную переменную в состояние отсутствия значения, путем присвоения ему специального значения nil
Заметка
nil не может быть использован с не опциональными константами и переменными. Если значение константы или переменной при определенных условиях в коде должно когда-нибудь отсутствовать, всегда объявляйте их как опциональное значение соответствующего типа.
Если объявить опциональную переменную без присвоения значения по умолчанию, то переменная автоматически установится в nil для вас:
Заметка
nil в Swift не то же самое что nil в Objective-C. В Objective-C nil является указателем на несуществующий объект. В Swift nil не является указателем, а является отсутствием значения определенного типа. Устанавливаться в nil могут опционалы любого типа, а не только типы объектов.
Инструкция If и Принудительное извлечение
Если опционал имеет значение, он будет рассматриваться как «неравным» nil :
Более подробную информацию об инструкции if можно получить в главе Управление потоком.
Заметка
Привязка опционалов
Привязку опционалов для инструкции if можно писать как показано ниже:
Мы можем переписать пример possibleNumber сверху, используя привязку опционалов, а не принудительное извлечение:
Это может быть прочитано как:
«Если опциональный Int возвращаемый Int(possibleNumber) содержит значение, установи в новую константу с названием actualNumber значение, содержащееся в опционале.»
Заметка
Неявно извлеченные опционалы
Иногда, сразу понятно из структуры программы, что опционал всегда будет иметь значение, после того как это значение впервые было установлено. В этих случаях, очень полезно избавиться от проверки и извлечения значения опционала каждый раз при обращении к нему, потому что можно с уверенностью утверждать, что он постоянно имеет значение.
Эти виды опционалов называются неявно извлеченные опционалы. Их можно писать, используя восклицательный знак ( String! ), вместо вопросительного знака ( String? ), после типа, который вы хотите сделать опциональным.
Неявно извлеченные опционалы полезны, когда известно, что значение опционала существует непосредственно после первого объявления опционала, и точно будет существовать после этого. Неявно извлечённые опционалы в основном используются во время инициализации класса, как описано в разделе «Бесхозные ссылки и неявно извлеченные опциональные свойства».
Вы можете проверить не является ли неявно извлеченный опционал nil точно так же как вы проверяете обычный опционал:
Вы также можете использовать неявно извлеченный опционал с привязкой опционалов, чтобы проверить и извлечь его значение в одном выражении:
Заметка
Обработка ошибок
Вы используете обработку ошибок в ответ на появление условий возникновения ошибок во время выполнения программы.
В отличие от опционалов, которые могут использовать наличие или отсутствие значения для сообщения об успехе или неудаче функции, обработка ошибок позволяет определить причину сбоя, и, при необходимости, передать ошибку в другую часть вашей программы.
Когда функция обнаруживает условие ошибки, она выдает сообщение об ошибке. Тот, кто вызывает функцию, может затем поймать ошибку и среагировать соответствующим образом.
Вот пример того, как обработка ошибок может быть использована в ответ на различные условия возникновения ошибок:
Генерация, вылавливание и передача ошибок рассмотрены более подробно в главе Обработка ошибок.
Утверждения и предусловия
Используйте утверждения и предусловия для выражения допущений, которые вы делаете, пока пишете код, таким образом вы будете использовать их в качестве части вашего кода. Утверждения помогают находить вам ошибки и некорректные допущения, а предусловия помогают обнаружить проблемы в рабочем приложении.
В дополнение к сравниванию ваших ожиданий и действительности во время исполнения, и утверждения, и предусловия становятся полезными при использовании, так как они по сути становятся документацией к вашему коду. В отличии от Обработки ошибок, о которых мы с вами говорили чуть ранее, утверждения и предусловия не используются для ожидаемых ошибок, получив которые ваше приложение может восстановить свою работу. Так как ошибка, полученная через утверждение или предусловие является индикатором некорректной работы программы, то нет возможности отловить эту ошибку в утверждении, которое ее вызвало.
Использование утверждений и предусловий не являются заменой проектированию вашего кода таким образом, где вероятность того, что появятся некорректные условия будет маловероятна. Однако их использование для обеспечения правильности данных и состояния заставляет ваше приложение прекращать работу по причине ошибки более предсказуемо, если наступает некорректное состояние, которое помогает быстрее найти эту самую ошибку. Прекращение работы как только наступает некорректное состояние позволяет ограничить ущерб, который вызывается этим самым некорректным состоянием.
Различие между утверждениями и предусловиями в том, когда они проверяются: утверждения проверяются только в сборках дебаггера, а предусловия проверяются и в сборках дебаггера и продакшн сборках. В продакшн сборках условие внутри утверждения не вычисляется. Это означает, что вы можете использовать сколько угодно утверждений в процессе разработки без влияния на производительность продакшена.
Отладка с помощью утверждений
Сообщение утверждения можно пропускать по желанию, как в следующем примере:
Если код уже проверяет условие, то вы используете функцию assertionFailure(_:file:line:) для индикации того, что утверждение не выполнилось. Например:
Обеспечение предусловиями
Заметка
Вы можете использовать функцию fatalError (_:file:line:) во время прототипирования или ранней разработки для создания заглушек для функциональности, которая еще не реализована, написав fatalError («Unimplemented») в качестве реализации заглушки. Поскольку фатальные ошибки никогда не оптимизируются, в отличие от утверждений или предусловий, вы можете быть уверены, что выполнение кода всегда прекратится, если оно встречает реализацию заглушки.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.