Swift 当两个选项被分配给if-let语句时,哪个选项被展开?敏捷的语言

Swift 当两个选项被分配给if-let语句时,哪个选项被展开?敏捷的语言,swift,optional,Swift,Optional,所以,如果我有下面写的一些代码 func currentWeatherDictionaryfromjsonDictionary (jsonDictionary: [String: AnyObject]? ) -> CurrentWeather? { if let currentWeatherama = jsonDictionary?["currently"] as? [String: AnyObject] {... 现在在if let语句中有两个选项,第一个是jsonDictio

所以,如果我有下面写的一些代码

func currentWeatherDictionaryfromjsonDictionary (jsonDictionary: [String: AnyObject]? ) -> CurrentWeather? {
    if let currentWeatherama = jsonDictionary?["currently"] as? [String: AnyObject] {...
现在在
if let
语句中有两个选项,第一个是
jsonDictionary
?第二个是从访问字典返回的可选项,该字典被强制转换为可选项(因为键可能不存在)

问题是,如果让语句展开,这个
是哪个选项,还是两者都可以

我以为代码只会打开第二个可选项,但当我在操场上玩耍时,jsonDictionary似乎也打开了。我想知道我是否是对的,因为我对这个很陌生。此外,除了官方的Swift指南之外,我还能在哪里找到更多的语法,因为该指南在很多情况下都不涉及细节。

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

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

  • 如果这样做有效,则获取结果字典的
    [“当前”]
    键的值,生成一个新的可选值

  • 一个命令,
    as?
    完成两件事:

    • 它测试是否可以安全地打开可选包装,以及

    • 它测试生成的未包装值是否可以安全地向下转换到字典中

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


如果在测试过程中出现任何故障,则
If
测试将以静默和安全的方式失败。

您还要求进一步阅读。这是我的书,关于选项:-关于演员:-关于字典:-最后,关于
if let
语法:@anishparajuli谢谢,如果我能帮忙,我很高兴!