是否有一种简洁的方式来展开和分配swift?

时间:2014-10-03 16:40:04

标签: memory swift

我在swift中有一个丑陋(但工作)的解包代码:

var color = UIColor.whiteColor()
if ( label.backgroundColor? != nil )
{
  color = label.backgroundColor!
}

有没有更简洁的方法可以像在C ++中那样在swift中编写它?

UIColor color = (label.backgroundColor==nil) ?
  UIColor.whiteColor() : label.backgroundColor; 

1 个答案:

答案 0 :(得分:10)

Swift拥有“nil coalescing operator”??,它完全符合你的要求 正在寻找:

let color = label.backgroundColor ?? UIColor.whiteColor()

documentation中所述,a ?? b

的快捷方式
a != nil ? a! : b

其中b仅在a == nil(短路评估)时进行评估。