Джерело: Guard in Swift
Подивимось приклад, щоб зрозуміти це чітко
Приклад 1:
func validate() {
guard 3>2 else {
print ("False")
return
}
print ("True") //True
}
validate()
У наведеному вище прикладі ми бачимо, що 3 більше, ніж 2, і твердження, що знаходиться в пункті вартості іншого, пропускається, і надрукується True.
Приклад 2:
func validate() {
guard 1>2 else {
print ("False") //False
return
}
print ("True")
}
validate()
У наведеному вище прикладі ми бачимо, що 1 менше, ніж 2, і заява всередині пункту guard else виконується, і False друкується з подальшим поверненням.
Example 3: gaurd let, unwrapping optionals through guard let
func getName(args myName: String?) {
guard let name = myName, !name.isEmpty else {
print ("Condition is false") // Condition is false return
}
print("Condition is met\(name)")
}
getName(args: "")
У наведеному вище прикладі ми використовуємо гвардію, щоб розгортати додаткові параметри. У функції getName ми визначили змінну рядка типу myName, яка не є обов'язковою. Тоді ми використовуємо гвардію, щоб перевірити, чи змінна myName нульова чи ні, якщо не призначити ім'я та перевірити ще раз, чи ім’я не порожнє. Якщо обидві умови кваліфіковані, тобто істинні, блок else буде пропущений і надрукувати "Умови відповідають імені".
В основному ми перевіряємо дві речі, розділені комою, спочатку розкручуючи та необов'язково та перевіряючи, чи відповідає це умові чи ні.
Тут ми нічого не передаємо до функції, тобто порожній рядок, а значить, умова є помилковим - це print.
func getName(args myName: String?) {
guard let name = myName, !name.isEmpty else {
print ("Condition is false")
return
}
print("Condition is met \(name)") // Condition is met Hello
} getName(args: "Hello")
Тут ми передаємо функцію "Привіт", і ви бачите, що результат друкується "Умова виконано Привіт".