Найти в Дзене

О чём не задумываются современные программисты Swift 5. Часть 1

Expressions, Statements и Declarations — три важных термина, о которых разработчики либо не знают, либо не понимают смысл их различий.
Оглавление
Статья подготовлена для студентов курса «Разработчик iOS» в образовательном проекте OTUS.

Expressions, Statements и Declarations — три важных термина, о которых разработчики либо не знают, либо не понимают смысл их различий.

Если кратко:

1. Expression (выражение) – что-либо, что устанавливает/создаёт значение;

2. Statement (предписание) – строчка кода, которая делает что-либо. Ничего не возвращает;

3. Declarations (объявление) – указание идентификатора (признака объекта), используется, чтобы уведомить компилятор о существовании элемента.

Зачем это знать?

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

-2

В 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-типов.

-3

В следующей публикации поговорим с вами о Statements и Declarations, не пропустите!

Записывайтесь на курс «Разработчик iOS» и откройте для себя всю силу и мощь Swift 5.
ЗАПИСАТЬСЯ НА КУРС