我经常使用这样的代码:
var myName = "Guest"
if let data = dictionary["name"] as? String { myName = data; }
func supply (name: myName)
如何使它像这样(或类似):
guard let myName = dictionary["name"] as? String else { let myName = "Guest" }
func supply (name: myName)
我更喜欢后者,因为它涉及的变量名称较少,而且更直接。我已经尝试了代码,但看起来括号内的let myName = "Guest"
仅受括号内的变量范围的限制。如何使它成为可能?感谢。
答案 0 :(得分:3)
使用nil-coalescing运算符。
let myName = (dictionary["name"] as? String) ?? "Guest"
这会尝试将键"name"
的值解包为字符串,如果键"Guest"
没有值,或者无法将值转换为"name"
,则会回退到String
analyticId