В 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?.