guard?Оператор guard в Swift используется для раннего выхода — он проверяет условие и, если это условие не выполнено, выполняет обязательный блок else. Блок else всегда должен передать управление из текущей области видимости с помощью return, throw, break или continue.
guard condition else {
return // или throw, break, continue
}
guard отличается от ifКлючевое отличие — область видимости развёрнутых переменных:
if let развёрнутая переменная доступна только внутри блока ifguard let развёрнутая переменная остаётся доступной на протяжении всей оставшейся части охватывающей области видимости// if let — ограниченная область видимости
if let name = optionalName {
print(name) // доступно только здесь
}
// guard let — расширенная область видимости
guard let name = optionalName else { return }
print(name) // доступно для остальной части функции
guard letИспользование guard let даёт два основных преимущества:
if, что облегчает понимание кодаfunc greet(_ optionalName: String?) {
guard let name = optionalName else {
print("No name provided")
return
}
// `name` безопасно доступна здесь
print("Hello, \(name)!")
}
Таким образом, guard особенно полезен в функциях с несколькими необязательными параметрами, где использование if let создало бы глубоко вложенный, сложно читаемый код.
Блок else оператора guard является необязательным и может быть опущен, если ты хочешь, чтобы программа продолжала выполняться после проверки условия, которое не прошло.
Новый — ещё не проверен сообществом
Вы