Ответ
Optional Binding — это безопасный способ извлечения значения из опционала для его временного использования в ограниченной области видимости. Он проверяет, содержит ли опционал значение, и, если да, извлекает его в новую константу или переменную.
Основные формы:
-
if let— значение доступно только внутри блокаif.var optionalName: String? = "John" if let name = optionalName { print("Hello, (name)") // Значение 'name' доступно здесь } else { print("Name is nil") } // 'name' здесь уже не существует -
guard let— используется для раннего выхода. Значение доступно после блокаguardв той же области видимости.func greet(name: String?) { guard let name = name else { print("Name is nil") return // Обязательный ранний выход } // 'name' доступна здесь как неопциональная String print("Hello, (name)") }
Ключевые особенности:
- Безопасность: Исключает риск краша при force unwrap (
!). - Область видимости:
if letограничивает область,guard let— расширяет. - Несколько опционалов: Можно связывать несколько значений через запятую. Все должны быть не
nil.if let username = userDict["name"], let age = userDict["age"] { print("(username) is (age) years old") } if var/guard var: Позволяет получить изменяемую копию значения внутри блока.