Menu
Coddy logo textTech

Развертывание с помощью if let

Часть раздела Основы путешествия по Swift на Coddy — урок 12 из 86.

Чтобы безопасно получить доступ к значению внутри опционала, мы используем if let — технику, называемую optional binding. Она проверяет, содержит ли опционал значение, и, если да, извлекает его в временную константу.

var username: String? = "Swift_Dev"

if let name = username {
    print("Welcome, \(name)")
} else {
    print("No username found")
}
// Добро пожаловать, Swift_Dev

Здесь if let проверяет, содержит ли username значение. Поскольку оно есть, значение извлекается в name, которая существует только внутри блока if. Если бы username было равно nil, вместо этого выполнился бы блок else.

var age: Int? = nil

if let unwrappedAge = age {
    print("Age is \(unwrappedAge)")
} else {
    print("Age not provided")
}
// Возраст не указан

Поскольку age равно nil, условие не выполняется и выполняется блок else. Это предотвращает сбои, которые могли бы возникнуть, если бы мы попытались использовать отсутствующее значение напрямую.

challenge icon

Задание

Легко

Вам предоставлена следующая переменная:

var nickname: String? = "CoddyLearner"

Используйте if let для безопасного извлечения nickname. Если переменная содержит значение, выведите Hello, [value]!, где [value] — это извлеченное значение nickname. Если значение равно nil, выведите No nickname set.

Шпаргалка

Используйте if let (опциональную привязку) для безопасного извлечения значения из опционала и доступа к нему:

var username: String? = "Swift_Dev"

if let name = username {
    print("Welcome, \(name)")
} else {
    print("No username found")
}
// Welcome, Swift_Dev

Если опционал содержит значение, оно извлекается во временную константу, которая существует только внутри блока if. Если опционал равен nil, выполняется блок else:

var age: Int? = nil

if let unwrappedAge = age {
    print("Age is \(unwrappedAge)")
} else {
    print("Age not provided")
}
// Age not provided

Попробуйте сами

var nickname: String? = "CoddyLearner"

// TODO: Напишите свой код ниже
// Используйте if let для безопасного извлечения nickname
// Если он содержит значение, выведите "Hello, [value]!"
// Если значение равно nil, выведите "No nickname set"
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы