Swift 如何使用guard取消字典中的可选项?
我正在用东西解析字典以生成火箭对象。在解析方法中,我使用guard进行检查。是否可以使用guard同时检查字典中的现有值并将其展开Swift 如何使用guard取消字典中的可选项?,swift,optional,Swift,Optional,我正在用东西解析字典以生成火箭对象。在解析方法中,我使用guard进行检查。是否可以使用guard同时检查字典中的现有值并将其展开 let rocketDictionary : [String : String?] = [ "name" : nil, "numberOfThrusters" : nil ] func generateRocketSchematics(rocketDictionary : [String : String?]) { guard let rocketNam
let rocketDictionary : [String : String?] = [ "name" : nil, "numberOfThrusters" : nil ]
func generateRocketSchematics(rocketDictionary : [String : String?]) {
guard let rocketName = rocketDictionary["name"] as? String else {
print("no rocket name")
return
}
print(rocketName)
}
这段代码不会编译,因为
as?字符串
。如果我删除它,rocketName将是一个字符串?是否可以编写guard语句以返回字符串您可以将模式匹配与guard/case
一起使用:
func generateRocketSchematics(rocketDictionary : [String : String?]) {
guard case let rocketName?? = rocketDictionary["name"] else {
print("no rocket name")
return
}
print(rocketName) // rocketName is a String
}
rocketName???
是的同义词。Some(.Some(rocketName))
,所以
case let rocketName?? = rocketDictionary["name"]
匹配rocketDictionary[“name”]
(具有
类型String???
)不是nil
,且未包装的值(具有
类型字符串?
)也不是nil
。双重展开值
(类型为String
)然后分配给rockedName