Этот оператор используется для работы с опциональными типами (Optional) в Swift.
Объявление опциональных переменных:
var name: String? // может содержать String или nil
Optional Chaining (опциональное связывание):
let length = person?.name?.count // безопасно получаем count
Если person
или name
равно nil, выражение вернет nil без ошибки.
Используется для принудительного извлечения значения из опционала.
let definiteString: String = possibleString! // принудительное извлечение
Предоставляет значение по умолчанию для опционалов.
let value = optionalValue ?? defaultValue
let username = enteredName ?? "Anonymous"
optionalValue
содержит значение, оператор возвращает егоoptionalValue
равен nil, возвращается defaultValue
optionalValue != nil ? optionalValue! : defaultValue
// Безопасный подход
let safeAge = person?.age ?? 0
// Опасный подход (может упасть)
let unsafeAge = person!.age!
?
и ??
вместо !
где это возможно!
только когда уверены в наличии значения?
- для безопасной работы с опционалами (Optional Chaining)!
- для принудительного извлечения значений (Force Unwrap)??
- для предоставления значения по умолчанию (Nil-Coalescing)