В Apple Swift, в каких случаях я бы не хотел, чтобы неявно разворачивалась опция?
Полагаю, я понимаю, почему дополнительные опции удобны (моя лучшая мысль для использования заключается в том, чтобы вернуть нулевое логическое значение), но в каком случае я хочу объявить обернутое необязательное использование? скорее, чем! для неявно развернутого необязательного.
Просто не нужно объявлять об этом? а затем придется печатать! повсюду, а не просто использовать! один раз.
Я не хочу игнорировать? как бесполезно, но я просто не могу найти для этого пользы... Любые идеи?
Ответы
Ответ 1
Если вы попытаетесь получить доступ к содержимому неявно развернутого дополнительного файла и там ничего не будет, ваше приложение выйдет из строя.
Если вы используете шаблоны для проверки содержимого необязательной привязки необязательной привязки и необязательной цепочки, вы можете контролировать, как ваше приложение должно изящно потерпеть неудачу в непредвиденных ситуациях. И это не делает ваш код еще более сложным.
Не сбой - это повод для меня.
Ответ 2
Сначала давайте поговорим о том, в чем смысл? быстро. Вы можете создать var, который выглядит следующим образом.
var number : Int?
В основном вы говорите, что существует вероятность того, что эта переменная может быть равна нулю. Если есть вероятность того, что объект может быть равен нулю, тогда вы не захотите делать что-то вроде этого.
var secondNumber = number! + 5
В основном в том утверждении, о котором вы говорите, есть вероятность, что эта переменная может быть нулевой, но я полностью проигнорирую этот факт и притворяюсь, что ничто не может быть нулевым.
Вместо этого вы захотите проверить, существует ли эта переменная, и затем установить ее так:
var number : Int?
var number2 : Int?
number = 10
if let unwrappedNumber = number {
number2 = unwrappedNumber + 5
}
Надеюсь, это поможет!
Ответ 3
Неявно развернутые опционы включают возможный отказ, аналогичный разыменованию нулевых указателей. Вы должны использовать их только в том случае, если вы можете быть уверены, что никто не случайно проиграет ничто, или когда вам будет удобно сообщать клиентам интерфейса о том, что функция выйдет из строя, если они нарушат требования к интерфейсу.
Другой способ избежать использования? Повторяется утверждение if let:
func foo(bar:Int?) -> Int? {
if let x = bar {
if Int.max / x >= x {
return x * x
}
}
return nil
}
x
здесь Int
, а не Int?
.