gpt4 book ai didi

swift - 当两个可选项被分配给一个 if let 语句时,哪个被解包? swift 语言

转载 作者:搜寻专家 更新时间:2023-11-01 07:34:20 26 4
gpt4 key购买 nike

所以如果我有一些如下所示的代码

func currentWeatherDictionaryfromjsonDictionary (jsonDictionary: [String: AnyObject]? ) -> CurrentWeather? {
if let currentWeatherama = jsonDictionary?["currently"] as? [String: AnyObject] {...

现在if let语句中有两个选项,第一个是jsonDictionary?第二个是从访问字典返回的可选值,它被强制转换为可选值(因为键可能不存在)。

问题是这个 if let 语句展开哪个可选,还是两者都有?

我认为代码只会打开第二个可选的,但是当我在 Playground 上玩耍时,似乎 jsonDictionary 也被打开了。想知道我是否是对的,因为我对此很陌生。还有,除了官方的 swift 指南之外,我还能在哪里找到更多关于语法的信息,因为该指南在很多情况下都没有详细说明。

最佳答案

这是一个“可选链”——一系列命令,如果其中任何一个失败,它会在中间中止。实际上这里发生了四件(或五件)事情:

if let currentWeatherama = jsonDictionary?["currently"] as? [String: AnyObject] 
  • 第一个 ? 测试是否可以安全地展开可选的 jsonDictionary

  • 如果成功,则提取生成的字典的 ["currently"] 键的值,产生一个新的 Optional;

  • 一个命令,as?两个事情:

    • 它测试 Optional 是否可以安全地展开,并且

    • 它测试生成的展开值是否可以安全地转换为字典;

  • 如果成功,结果将分配给 currentWeatherama

如果过程中有任何失败,if 测试会安静且安全地失败。

关于swift - 当两个可选项被分配给一个 if let 语句时,哪个被解包? swift 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30895424/

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