В этой лекции вы познакомитесь с операторами и особенностями работы с ними в Swift. Операторы — это специальные символы или фразы, которые вы используете для комбинирования, проверки или изменения значений. В Swift используется большая часть стандартных C операторов. Некоторые из них были переработаны для уменьшения количества ошибок при разработке. Например, оператор присвоения не возвращает значения, чтобы избежать путаницы с оператором эквивалентности. При использовании арифметических операндов плюс, минус, умножить, делить на литералах выполняется проверка на переполнение. Помимо этого, в Swift добавлены операторы диапазона, на которых мы остановимся подробнее. Операторы можно разделить на три типа по количеству операндов: унарные, бинарные и тернарный, который в Swift'е только один и своего вы создать не можете. Оператор присваивания предназначен для инициализации или обновления переменной или константы. Ещё раз хочу обратить внимание, что в отличие от C оператор присваивания не возвращает значение присвоения. То есть пример, показанный на слайде, будет не верен. Большая часть арифметических операторов работает с двумя операндами. Исключениями являются операторы плюс и минус, которые могут быть и унарными. Минус для инверсии значения, плюс же никакого смысла в себе не несёт, но может служить для лучшего форматирования кода. При использовании арифметических операторов на литералах выполняется проверка на переполнение. Оператор плюс также можно использовать для конкатенации строк и массивов. Составные арифметические операторы позволяют немного сократить запись. Они сочетают в себе оператор присваивания и оператор для выполнения арифметической операции. На слайде пример одних и тех же операций, записанных по разному. Swift поддерживает все основные операторы сравнения из языка C. Также используются операторы эквивалентности === и !==, оператор неэквивалентности. Операторы сравнения возвращают в качестве результата boolean. Операторы сравнения могут быть использованы для сравнения кортежей в том случае, если количество элементов в кортежах совпадает, а типы, используемые в кортежах, поддерживают сравнение. Стандартная реализация ограничена сравнением кортежей до семи элементов. Для сравнения большего количества элементов в кортеже вам понадобится написать собственные реализации операторов сравнения. Тернарный оператор условия не имеет особенностей в реализации. На слайде показана запись в виде данного оператора и та же самая запись, но с использованием выражения if... else. Nil-coalescing operator служит для работы с optional значениями в Swift. Это бинарный оператор, который разворачивает значение левого операнда, а если оно равно nil, то вовзращается значение правого операнда. В качестве операнда справа не может использоваться optional значение. В Swift используется оператор диапазона, который является сокращённой записью для инициализации ряда значений. В качестве операндов на данный момент могут использоваться только Int значения. Значение левого операнда должно быть меньше значения правого операнда. Соответственно, вы можете создавать только восходящие последовательности. Для создания нисходящей последовательности можно воспользоваться функцией reversed. Диапазоны бывают закрытые, полуоткрытые и односторонние. Закрытый диапазаон предоставляет последовательность значений, начиная от левого операнда и заканчивая правым. Удобно использовать для организации циклов в указанном вами диапазоне. Полуоткрытый диапазон отличается от закрытого лишь тем, что значение правого операнда не включается в последовательность. Применение находит при работе с массивами. Полуоткрытый диапазон позволяет исключать значения только правого операнда. Односторонний диапазон создаёт последовательность либо от минимального возможного значения до значения, указанного вами, либо же от значения, указанно вами, до максимального возможного значения. Так же, как и полуоткрытый диапазон, чаще всего находит свое применение при работе с массивами. Вы можете создавать диапазон без привязки к коллекции. При попытке итерации подобного диапазона вы либо получите ошибку, если левая граница не будет указана, либо получите диапазон, максимальным значением которого будет максимальное значение Int'а же. Swift поддерживает три стандартных логических оператора: НЕ, И, ИЛИ. Для них задано стандартное поведение, операторы можно комбинировать, например, для проверки выполнения нескольких условий. Если вам не приходилось использовать их ранее, то в материалах для самостоятельной подготовки вы найдёте ссылку для ознакомления с материалами. В этом главе мы познакомились с основными операторами в Swift.