Этот оператор используется для работы с опциональными типами (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, возвращается defaultValueoptionalValue != nil ? optionalValue! : defaultValue
// Безопасный подход
let safeAge = person?.age ?? 0
// Опасный подход (может упасть)
let unsafeAge = person!.age!
? и ?? вместо ! где это возможно! только когда уверены в наличии значения? - для безопасной работы с опционалами (Optional Chaining)! - для принудительного извлечения значений (Force Unwrap)?? - для предоставления значения по умолчанию (Nil-Coalescing)