Swift可选类型中"可选的可选"的目的是什么?

wgr*_*r03 5 optional swift

我在Swift Tests源代码中找到了一个有趣的函数:

func test(_ v: A????, _ cast: (A????) -> B?)
Run Code Online (Sandbox Code Playgroud)

由于Type?只是语法糖Optional<Type>,这意味着参数的类型v可以重写为Optional<Optional<Optional<Optional<A>>>>.

我知道这个功能是用来测试可选类型,所以它肯定是过分的论据去vcast,但什么是实际使用具有"可选的可选等"的 输入Swift(如果有的话)?

vac*_*ama 3

当您访问数据时,这些情况有时会在 Swift 中发生。

一个示例是,如果您有一个具有可选值类型的字典,然后您在该字典中查找一个值:

let rockStars: [String: String?] = ["Sting": nil, "Elvis": "Presley", "Bono": nil, "Madonna": nil]

let lastName = rockStars["Elvis"]
print(lastName as Any)
Run Code Online (Sandbox Code Playgroud)
Optional(Optional("Presley"))
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为当键不存在时字典查找可能会失败,并且nil在这种情况下会返回。因此,字典查找的返回类型必须是包装在可选值中的值类型。从字典中查找rockStars会返回一个String??.