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>В<a>предыдущей заметке</a>мы упомянули такие термины, как Expression (Выражение), Statement (Предписание) и Declarations (Объявление), а также подробно поговорили о первом из них. Продолжаем разговор.</p>
2
<p>В<a>предыдущей заметке</a>мы упомянули такие термины, как Expression (Выражение), Statement (Предписание) и Declarations (Объявление), а также подробно поговорили о первом из них. Продолжаем разговор.</p>
3
<h2>Предписания (Statements) в Swift могут быть 3 типов</h2>
3
<h2>Предписания (Statements) в Swift могут быть 3 типов</h2>
4
<ol><li><strong>Simple</strong>. Простые предписания есть почти в каждой строчке кода, когда вы пишите декларацию или выражение - это уже и есть простое предписание.</li>
4
<ol><li><strong>Simple</strong>. Простые предписания есть почти в каждой строчке кода, когда вы пишите декларацию или выражение - это уже и есть простое предписание.</li>
5
<li><strong>Control Flow</strong>. К этому типу предписаний, управляющих потоком выполнения программы, относятся:</li>
5
<li><strong>Control Flow</strong>. К этому типу предписаний, управляющих потоком выполнения программы, относятся:</li>
6
</ol><p>● циклы: for-in, while, repeat-while; ● ветвления: if, switch, guard; ● лейблы, об этой конструкции многие, пишущие на<strong>Swift</strong>, не знают, их можно ставить перед циклами и ветвлением и управлять потоком с помощью break/continue; ● предписания для передачи управления: break, continue, fallthrough, return, throw; ● defer-конструкция вызывается прямо перед передачей управления за пределы скоупа; ● do/catch предписание.</p>
6
</ol><p>● циклы: for-in, while, repeat-while; ● ветвления: if, switch, guard; ● лейблы, об этой конструкции многие, пишущие на<strong>Swift</strong>, не знают, их можно ставить перед циклами и ветвлением и управлять потоком с помощью break/continue; ● предписания для передачи управления: break, continue, fallthrough, return, throw; ● defer-конструкция вызывается прямо перед передачей управления за пределы скоупа; ● do/catch предписание.</p>
7
<ol><li><strong>Compiler Control</strong>. Управлять поведением компилятора на практике приходится не часто. В Swift есть 3 основных предписания, управляющих компилятором:</li>
7
<ol><li><strong>Compiler Control</strong>. Управлять поведением компилятора на практике приходится не часто. В Swift есть 3 основных предписания, управляющих компилятором:</li>
8
</ol><p>● блок условной компиляции (Conditional Compilation Block), где вы можете проверить окружение: тип операционной системы, архитектуру CPU, версию Swift, компилятора и другое; ● предписание управления строкой (Control Line Statement)<strong>#sourceLocation</strong>используется при генерации кода и мета-программировании; ● Compile-Time Diagnostic предписания, вызывающие ошибки<strong>#error</strong>и<strong>#warning</strong>.</p>
8
</ol><p>● блок условной компиляции (Conditional Compilation Block), где вы можете проверить окружение: тип операционной системы, архитектуру CPU, версию Swift, компилятора и другое; ● предписание управления строкой (Control Line Statement)<strong>#sourceLocation</strong>используется при генерации кода и мета-программировании; ● Compile-Time Diagnostic предписания, вызывающие ошибки<strong>#error</strong>и<strong>#warning</strong>.</p>
9
<p>Помимо этого, существует<strong>#available</strong>-условие для проверки доступности API во время выполнения программы.</p>
9
<p>Помимо этого, существует<strong>#available</strong>-условие для проверки доступности API во время выполнения программы.</p>
10
<h2>Декларации (Declarations) в Swift также являются и Определениями (Definitions)</h2>
10
<h2>Декларации (Declarations) в Swift также являются и Определениями (Definitions)</h2>
11
<p>Декларациями являются названия конструкций языка, которые вы используете:<strong>var, let, function, import, class, struct, enum, protocol, init, deinit, extension, subscript, typealias, operator, precedencegroup</strong>. Объявление блока кода, т. е. фигурные скобки, является также видом декларации. Например, протоколы не имеют реализаций функций и свойств, это значит, что они являются декларациями.</p>
11
<p>Декларациями являются названия конструкций языка, которые вы используете:<strong>var, let, function, import, class, struct, enum, protocol, init, deinit, extension, subscript, typealias, operator, precedencegroup</strong>. Объявление блока кода, т. е. фигурные скобки, является также видом декларации. Например, протоколы не имеют реализаций функций и свойств, это значит, что они являются декларациями.</p>
12
<p>У деклараций существуют модификаторы, изменяющие поведение декларируемой конструкции:<strong>dynamic, final, lazy, optional, required, unowned, weak</strong>. Также для деклараций можно указать один из 5 уровней доступа в Swift:<strong>open, public, internal, fileprivate, private</strong>.</p>
12
<p>У деклараций существуют модификаторы, изменяющие поведение декларируемой конструкции:<strong>dynamic, final, lazy, optional, required, unowned, weak</strong>. Также для деклараций можно указать один из 5 уровней доступа в Swift:<strong>open, public, internal, fileprivate, private</strong>.</p>
13
<p><em>Пожалуй, на сегодня всё. Но вы всегда можете узнать больше, записавшись на курс "<a>iOS-разработчик</a>".</em></p>
13
<p><em>Пожалуй, на сегодня всё. Но вы всегда можете узнать больше, записавшись на курс "<a>iOS-разработчик</a>".</em></p>
14
14