gpt4 book ai didi

swift - 关于在 Swift 中声明可选项和非可选项

转载 作者:行者123 更新时间:2023-11-28 11:11:56 25 4
gpt4 key购买 nike

我相信这可能是重复的,但我找不到任何简洁明了的解释,所以就这样吧。

我们都知道,如果我们这样声明一个变量

1> var a : String?

我们得到一个可选的

a: String? = nil

如果我们省略 ?,我们必须在创建时将 a 初始化为 nil 以外的值。但是,如果我们说类似的话

2> var a : String!

我们得到

a: String! = nil

这让我困惑不已,因为我假设该声明意味着 a 不能是可选的。因此,尝试使用 REPL,我得到了以下令人困惑的结果:

 3> a!
fatal error: unexpectedly found nil while unwrapping an Optional value

4> a as! String
fatal error: unexpectedly found nil while unwrapping an Optional value

5> a as! String?
$R2: String? = nil

6> a as? String
fatal error: unexpectedly found nil while unwrapping an Optional value

7> a as? String!
$R3: String!? = nil

有人可以提供一些线索吗?

最佳答案

var a: String! 就是我们所说的隐式解包可选。它是一个可选值,可能包含 nil 的值,但编译器不会产生任何关于它的编译时错误。

如果它有一个 nil 值,并且被使用,你会得到一个运行时错误,就好像你强行打开一个具有 nil 值的普通可选值一样。

Implicitly unwrapped optionals are useful when an optional’s value is confirmed to exist immediately after the optional is first defined and can definitely be assumed to exist at every point thereafter.

关于swift - 关于在 Swift 中声明可选项和非可选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34435760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com