Источник: Страж в Свифте
Давайте посмотрим на пример, чтобы понять это ясно
Пример 1:
func validate() {
guard 3>2 else {
print ("False")
return
}
print ("True") //True
}
validate()
В приведенном выше примере мы видим, что 3 больше 2, и оператор внутри предложения guard else пропускается, и выводится 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: "")
В приведенном выше примере мы используем guard let, чтобы развернуть опции. В функции getName мы определили переменную типа string myName, которая является необязательной. Затем мы используем guard let, чтобы проверить, равна ли переменная myName нулю или нет, если не присвоено имя и еще раз проверить, имя не пусто. Если оба условия удовлетворены, т.е. истинно, блок else будет пропущен и выведите «Условия выполнены с именем».
По сути, мы здесь проверяем две вещи, разделенные запятой, сначала разворачиваем и необязательно, и проверяем, удовлетворяет ли это условию или нет.
Здесь мы ничего не передаем функции, т. Е. Пустой строке, и, следовательно, условие false - это 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")
Здесь мы передаем «Hello» в функцию, и вы можете видеть, что вывод печатается «Условие выполнено Hello».