Что такое опционалы
Часть раздела Основы путешествия по Swift на Coddy — урок 11 из 86.
Иногда переменная может вообще не иметь значения. В Swift отсутствие значения представляется с помощью опционалов. Опционал говорит: «значение есть, и оно равно x» или «значения нет вовсе».
Чтобы объявить опционал, добавьте вопросительный знак ? после типа:
var nickname: String? = "Alex"
var age: Int? = nilВ примере выше nickname содержит значение "Alex", в то время как age содержит nil — способ Swift сказать «нет значения». Обычные переменные не могут быть nil, но опционалы могут.
Представьте опционал (optional) как коробку, которая может содержать что-то или быть пустой. Прежде чем использовать то, что находится внутри, вам нужно проверить, действительно ли там что-то есть. Это ключевая функция безопасности в Swift, которая помогает предотвратить сбои из-за неожиданно отсутствующих значений.
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilОбратите внимание, что когда вы выводите опционал со значением, он отображает Optional(100), а не просто 100. Чтобы получить доступ к фактическому значению внутри, вам нужно развернуть (unwrap) опционал — это мы разберем в следующих уроках.
Задание
ЛегкоНапишите функцию createOptional, которая принимает число и возвращает строку, показывающую, как это число выглядело бы при выводе в качестве опционального значения (optional).
Когда вы выводите опционал, содержащий значение, Swift отображает его в формате Optional(value).
Напоминание о синтаксисе функций: В Swift функция, которая возвращает значение, использует стрелку -> для указания типа возвращаемого значения и ключевое слово return для отправки результата. Например:
func myFunction(param: Int) -> String {<br> return "result"<br>}
Вы можете создать возвращаемую строку, используя интерполяцию строк: "Optional(\(value))" — часть \(value) вставляет число непосредственно в строку.
Параметры:
value(Int): Число, которое нужно обернуть в формат опционала
Возвращает: Строку в формате Optional(value), где value — это предоставленное число.
Пример: Если на вход подается 100, функция должна вернуть "Optional(100)"
Шпаргалка
В Swift опционалы представляют отсутствие или наличие значения. Опционал может либо содержать значение, либо быть nil.
Чтобы объявить опционал, добавьте вопросительный знак ? после типа:
var nickname: String? = "Alex"
var age: Int? = nilОбычные переменные не могут быть nil, а опционалы — могут. Используйте nil для представления «отсутствия значения»:
var score: Int? = 100
score = nilПри выводе опционала со значением Swift отображает его как Optional(value):
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilПопробуйте сами
func createOptional(value: Int) -> String {
// Напишите код здесь
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: Простая математикаОператоры сравнения7Основы ввода-вывода
Функция PrintИнтерполяция строкВвод через ReadLineПреобразование типовПовторение — до 120Повторение — True или False10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияМетки аргументовПовторение: функция SigmaПовторение: функция валидацииЗначения по умолчанию13Итерирование по последовательностям
Итерирование по элементамМетод enumerateИтерирование по строкам, ч. 1Итерирование по строкам, ч. 22Переменные
Let против VarАннотации типовЧислаСтрокиBooleanСоглашения об именованииИтоги — Инициализация переменных5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение: простая логикаЛогические операторы. Часть 3Тернарный оператор8Калькулятор разделения счета
Приветственное сообщениеПолучение ввода14Массивы: Продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опционалы
Что такое опционалыРазвертывание с помощью if letGuard letОператор объединения с nilИтоги — безопасное развертывание6Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторОператор SwitchSwitch с диапазонами9Циклы
Цикл For-InЦикл WhileЦикл Repeat-WhileBreakContinueПовторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод