如何从可选变量中获取值,并在可选变量无效的情况下获取默认值?
问题描述:
我有这样的代码,我经常使用:如何从可选变量中获取值,并在可选变量无效的情况下获取默认值?
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"
仅受限于括号内的变量作用域。如何让它成为可能?谢谢。
答
使用nil-coalescing运算符。
let myName = (dictionary["name"] as? String) ?? "Guest"
这将试图解开价值的关键"name"
为字符串,并回落到"Guest"
事件有关键"name"
或没有价值,如果该值不能被转换为String
使用无聚结器。 ''let myName =(dict [“name”] as?String)?? “Guest”''' https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html –
@EricKenny ow我明白了。我也可以将nil-coalescer和可选的类型转换结合起来。太好了!请将您的评论作为答案,以便我可以选择它作为最佳答案。谢谢! –