在Apple Swift中,在什么情况下我不想要一个隐式未包装的可选项?



我相信我理解为什么可选选项很方便(我最好的想法是能够返回一个nil布尔值),但是在什么情况下我想声明一个包装的可选使用?而不是!对于可选的隐式取消包装。

似乎没有必要用?然后还要打字!到处都是,而不仅仅是使用!一次。

我不想忽视?虽然没用,但我就是找不到它的用处……什么好主意吗?

如果你试图访问隐式取消包装的可选内容,而那里什么也没有,你的应用程序会崩溃。

如果你使用模式来检查可选的内容——比如可选绑定和可选链接——你可以控制你的应用在不可预见的情况下如何优雅地失败。而且它不会使你的代码变得更复杂。

不崩溃对我来说似乎是一个很好的理由。

首先让我们来谈谈?是斯威夫特。您可以创建一个如下所示的变量:

var number : Int?

你基本上是在说这个变量有可能是nil。如果一个对象有可能是nil,那么你不会想要做这样的事情。

var secondNumber = number! + 5

基本上你在说,这个变量有可能是nil但是,我将完全忽略这个事实并假装它不可能是nil

相反,您需要先检查该变量是否存在,然后像这样设置

var number : Int?
var number2 : Int?
number = 10
if let unwrappedNumber = number {
    number2 = unwrappedNumber + 5
}

希望这对你有帮助!

隐式解包装可选引入了一个可能的失败,类似于解引用空指针。只有当你可以确定没有人会意外地传递nil,或者当你可以放心地告诉接口的客户端,如果他们违反接口要求,函数将崩溃时,你才应该使用它们。

另一种避免使用?重复是if let语句:

func foo(bar:Int?) -> Int? {
  if let x = bar {
    if Int.max / x >= x {
      return x * x
    }
  }
  return nil
}

这里的xInt而不是Int?

相关内容

最新更新