Статья подготовлена для студентов курса «Разработчик iOS» в образовательном проекте OTUS.
Expressions, Statements и Declarations — три важных термина, о которых разработчики либо не знают, либо не понимают смысл их различий.
Если кратко:
1. Expression (выражение) – что-либо, что устанавливает/создаёт значение;
2. Statement (предписание) – строчка кода, которая делает что-либо. Ничего не возвращает;
3. Declarations (объявление) – указание идентификатора (признака объекта), используется, чтобы уведомить компилятор о существовании элемента.
Зачем это знать?
Как минимум, чтобы разбираться в синтаксических и лексических конструкциях изучаемого вами языка программирования и понимать, как ваш код будет скомпилирован и будет исполняться. Также это хорошее теоретическое подспорье, чтобы пользоваться продвинутыми возможностями языка Swift, например, для создания своих операторов.
В Swift 5 эти концепты достаточно хорошо выражены.
Выражения (Expressions) в Swift делятся на 4 типа
Primary
Первичных выражений больше других в коде, написанном на языке Swift, они участвуют в остальных трёх видах выражений. Среди первичных выражений выделяют подтипы:
— литеральные – объявление в коде значения-литерала числа, строки, массива или словаря;
— Self-выражения – выражения с использованием указателя на текущий экземпляр типа self;
— Superclass-выражения – аналогично предыдущему выражения с super-указателем;
— замыкания (Closures) – конструкция объявления замыкания (их также называют лямбды и анонимные функции);
— листы захвата (capture list) замыкания – конструкции для управления тем, как будут захвачены значения, окружающие замыкание;
— неявное обращение к элементу типа (Implicit Member Expression), например, обращение к элементу перечисления или статистическому методу типа;
— выражение в скобках;
— кортеж (Tuple);
— символ подстановки _, который используется для игнорирования значений в присваивании;
— Key-Path и #keyPath выражения используются в KVO/KVC для совместимости с Objective-C Runtime;
— #selector выражение – также для совместимости с Objective C, ведь это всё еще требуется для работы с UIKit.
Binary
Бинарные выражения похожи на бинарные операции в математике: два аргумента, а между ними оператор (infix operator). Самый явный пример – оператор присваивания =. Также примерами binary expression является тернарный оператор и операторы приведения типа (Type casting operator).
Prefix
Примером префиксного выражения является выражение с оператором try.
Postfix
Постфиксных выражений также немало в Swift:
— вызов функции является самым явным postfix expression;
— вызов .init(…);
— явное обращение к элементу экземпляра типа (Explicit Member Expression);
— постфиксное Self-выражение используется для возвращения типа Type.self;
— Subscript-выражение используется для вызова объявленного subscript;
— Force unwrapping-выражение используется, когда Optional точно не nil (ну или когда почти :)) с помощью постфикс оператора !;
— Optional-Chaining-выражение с постфикс оператором ? для безопасного вызова Optional-типов.
В следующей публикации поговорим с вами о Statements и Declarations, не пропустите!
Записывайтесь на курс «Разработчик iOS» и откройте для себя всю силу и мощь Swift 5.
ЗАПИСАТЬСЯ НА КУРС