这是否有简写:
var x: Int = 42;
var y: Int? = nil
x = y ?? x
E.g。如果y为nil
,则重新分配相同的值/不重新分配编辑:为了澄清,在示例中,如果y为零,我想保留x的值(42)。更好的措辞可能是“赋值,如果不是nil ”运算符。
Edit2:正如@rintaro指出的那样,重新分配可能会产生我想避免的副作用。我可以这样诉诸if let
:
var x: Int = 42;
var y: Int? = nil
if let y = y {
x = y
}
但这非常详细。
答案 0 :(得分:1)
没有内置运算符。
改为使用map
:
map(y) { x = $0 }
// OR
y.map { x = $0 }
注意:当观察变量时,此技术很有用:
var x: Int = 42 {
didSet {
println("didSet")
}
}
var y: Int? = nil
x = y ?? x // `didSet` is called
map(y) { x = $0 } // `didSet` is not called