0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: ios, swift5, expressions, statements, declarations, выражение, предписание, объявление</p>
1
<p>Теги: ios, swift5, expressions, statements, declarations, выражение, предписание, объявление</p>
2
<p><strong>Expressions</strong>,<strong>Statements</strong>и<strong>Declarations</strong>- три важных термина, о которых разработчики либо не знают, либо не понимают смысл их различий.</p>
2
<p><strong>Expressions</strong>,<strong>Statements</strong>и<strong>Declarations</strong>- три важных термина, о которых разработчики либо не знают, либо не понимают смысл их различий.</p>
3
<p>Если кратко: 1. Expression (выражение) - что-либо, что устанавливает/создаёт значение; 2. Statement (предписание) - строчка кода, которая делает что-либо. Ничего не возвращает; 3. Declarations (объявление) - указание идентификатора (признака объекта), используется, чтобы уведомить компилятор о существовании элемента.</p>
3
<p>Если кратко: 1. Expression (выражение) - что-либо, что устанавливает/создаёт значение; 2. Statement (предписание) - строчка кода, которая делает что-либо. Ничего не возвращает; 3. Declarations (объявление) - указание идентификатора (признака объекта), используется, чтобы уведомить компилятор о существовании элемента.</p>
4
<h2>Зачем это знать?</h2>
4
<h2>Зачем это знать?</h2>
5
<p>Как минимум, чтобы разбираться в синтаксических и лексических конструкциях изучаемого вами языка программирования и понимать, как ваш код будет скомпилирован и будет исполняться. Также это хорошее теоретическое подспорье, чтобы пользоваться продвинутыми возможностями языка<strong>Swift</strong>, например, для создания своих операторов.</p>
5
<p>Как минимум, чтобы разбираться в синтаксических и лексических конструкциях изучаемого вами языка программирования и понимать, как ваш код будет скомпилирован и будет исполняться. Также это хорошее теоретическое подспорье, чтобы пользоваться продвинутыми возможностями языка<strong>Swift</strong>, например, для создания своих операторов.</p>
6
<p>В Swift 5 эти концепты достаточно хорошо выражены.</p>
6
<p>В Swift 5 эти концепты достаточно хорошо выражены.</p>
7
<h2>Выражения (Expressions) в Swift делятся на 4 типа</h2>
7
<h2>Выражения (Expressions) в Swift делятся на 4 типа</h2>
8
<h3>Primary</h3>
8
<h3>Primary</h3>
9
<p>Первичных выражений больше других в коде, написанном на языке Swift, они участвуют в остальных трёх видах выражений. Среди первичных выражений выделяют подтипы: - литеральные - объявление в коде значения-литерала числа, строки, массива или словаря; -<strong>Self</strong>-выражения - выражения с использованием указателя на текущий экземпляр типа self; - Superclass-выражения - аналогично предыдущему выражения с<strong>super</strong>-указателем; - замыкания (Closures) - конструкция объявления замыкания (их также называют лямбды и анонимные функции); - листы захвата (capture list) замыкания - конструкции для управления тем, как будут захвачены значения, окружающие замыкание; - неявное обращение к элементу типа (Implicit Member Expression), например, обращение к элементу перечисления или статистическому методу типа; - выражение в скобках; - кортеж (Tuple); - символ подстановки _, который используется для игнорирования значений в присваивании; - Key-Path и<strong>#keyPath</strong>выражения используются в KVO/KVC для совместимости с Objective-C Runtime; -<strong>#selector</strong>выражение - также для совместимости с Objective C, ведь это всё еще требуется для работы с UIKit.</p>
9
<p>Первичных выражений больше других в коде, написанном на языке Swift, они участвуют в остальных трёх видах выражений. Среди первичных выражений выделяют подтипы: - литеральные - объявление в коде значения-литерала числа, строки, массива или словаря; -<strong>Self</strong>-выражения - выражения с использованием указателя на текущий экземпляр типа self; - Superclass-выражения - аналогично предыдущему выражения с<strong>super</strong>-указателем; - замыкания (Closures) - конструкция объявления замыкания (их также называют лямбды и анонимные функции); - листы захвата (capture list) замыкания - конструкции для управления тем, как будут захвачены значения, окружающие замыкание; - неявное обращение к элементу типа (Implicit Member Expression), например, обращение к элементу перечисления или статистическому методу типа; - выражение в скобках; - кортеж (Tuple); - символ подстановки _, который используется для игнорирования значений в присваивании; - Key-Path и<strong>#keyPath</strong>выражения используются в KVO/KVC для совместимости с Objective-C Runtime; -<strong>#selector</strong>выражение - также для совместимости с Objective C, ведь это всё еще требуется для работы с UIKit.</p>
10
<h3>Binary</h3>
10
<h3>Binary</h3>
11
<p>Бинарные выражения похожи на бинарные операции в математике: два аргумента, а между ними оператор (infix operator). Самый явный пример - оператор присваивания =. Также примерами<strong>binary expression</strong>является тернарный оператор и операторы приведения типа (Type casting operator).</p>
11
<p>Бинарные выражения похожи на бинарные операции в математике: два аргумента, а между ними оператор (infix operator). Самый явный пример - оператор присваивания =. Также примерами<strong>binary expression</strong>является тернарный оператор и операторы приведения типа (Type casting operator).</p>
12
<h3>Prefix</h3>
12
<h3>Prefix</h3>
13
<p>Примером префиксного выражения является выражение с оператором<strong>try</strong>.</p>
13
<p>Примером префиксного выражения является выражение с оператором<strong>try</strong>.</p>
14
<h3>Postfix</h3>
14
<h3>Postfix</h3>
15
<p>Постфиксных выражений также немало в Swift: - вызов функции является самым явным postfix expression; - вызов .init(…); - явное обращение к элементу экземпляра типа (Explicit Member Expression); - постфиксное Self-выражение используется для возвращения типа<strong>Type.self</strong>; - Subscript-выражение используется для вызова объявленного subscript; - Force unwrapping-выражение используется, когда Optional точно не nil (ну или когда почти :)) с помощью постфикс оператора !; - Optional-Chaining-выражение с постфикс оператором ? для безопасного вызова Optional-типов.</p>
15
<p>Постфиксных выражений также немало в Swift: - вызов функции является самым явным postfix expression; - вызов .init(…); - явное обращение к элементу экземпляра типа (Explicit Member Expression); - постфиксное Self-выражение используется для возвращения типа<strong>Type.self</strong>; - Subscript-выражение используется для вызова объявленного subscript; - Force unwrapping-выражение используется, когда Optional точно не nil (ну или когда почти :)) с помощью постфикс оператора !; - Optional-Chaining-выражение с постфикс оператором ? для безопасного вызова Optional-типов.</p>
16
<p><em>В следующей публикации поговорим с вами о<strong>Statements</strong>и<strong>Declarations</strong>, не пропустите!</em></p>
16
<p><em>В следующей публикации поговорим с вами о<strong>Statements</strong>и<strong>Declarations</strong>, не пропустите!</em></p>
17
17