HTML Diff
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