2016-11-15 79 views
-1

我有这样的代码,我经常使用:如何从可选变量中获取值,并在可选变量无效的情况下获取默认值?

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"仅受限于括号内的变量作用域。如何让它成为可能?谢谢。

+2

使用无聚结器。 ''let myName =(dict [“name”] as?String)?? “Guest”''' https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html –

+0

@EricKenny ow我明白了。我也可以将nil-coalescer和可选的类型转换结合起来。太好了!请将您的评论作为答案,以便我可以选择它作为最佳答案。谢谢! –

回答