2017-08-10 41 views
0

我经常遇到一个swift场景,如果可选不是零,我希望将它分配给var,否则将该var设置为默认值。然后我希望将结果保留在实施的最外面的范围内。有条件地分配变量值的最佳方法

var value:String 
if let temp = someOptionalField { 
    value = temp 
} else { 
    value = someDefaultValue 
} 

上述说法对于swift来说似乎过分,因为“temp”相当不值钱。在另一方面,使得如果LIKE语句下面也似乎不是“SWIFTY”,因为越来越“someDefaultField”可能是一个昂贵的过程

var value:String 
if someOptionalField != nil { 
    value = someOptionalField! 
} else { 
    value = someDefaultValue 
} 

什么是获得一个条件变量或指定给一个默认的swiftiest方式值,同时保持最终结果在最外层的范围内?有时候,我会用下面的语句,但我觉得用“==零”不走的迅速可选设计优势

var value:String? = someOptionalField 
if value == nil { 
    value = someDefaultValue 
} 
+1

'var value = someOptionalField ?? someDefaultValue' – nathan

回答

3

使用未缴合并运算符:

let value = someOptionalField ?? someDefaultValue 

如果someOptiobalField是零,它会自动分配valuesomeDefaultValue

+0

是的,完全忘了那个。 –

+0

是的,我也主要使用这个,或者如果让 –