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

kfm*_*e04 2 memory swift

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

var color = UIColor.whiteColor()
if ( label.backgroundColor? != nil )
{
  color = label.backgroundColor!
}
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方式来编写这个在swift中像我在C++中一样?

UIColor color = (label.backgroundColor==nil) ?
  UIColor.whiteColor() : label.backgroundColor; 
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 10

Swift拥有"nil coalescing operator" ??,它完全符合您的要求:

let color = label.backgroundColor ?? UIColor.whiteColor()
Run Code Online (Sandbox Code Playgroud)

文档中所述,a ?? b是一个快捷方式

a != nil ? a! : b
Run Code Online (Sandbox Code Playgroud)

其中b仅评估a == nil(短路评估).