【发布时间】:2017-11-21 06:00:08
【问题描述】:
我正在使用 Swift,我想知道如何在 1 行代码中实现这一点:
If a != nil, myVariable = a
else if a == nil, myVariable = b
我需要这样做,所以它适合
var myVariable = a {
didSet{
//Do something
}
}
有没有办法在 1 行中做到这一点,这样我就不必在其他地方更改它并触发 didSet{}?
类似这样的:
if var myVariable = a
else myVariable = b {
didSet{
//Do something
}
}
或者……
var if a != nil {myVariable = a}
else {myVariable = b} {
didSet{
//Do something
}
}
我知道这可能需要一些时间才能理解我的意思,我已尽力解释它。
编辑---> 编译器说:
nil 合并运算符 '??' 的左侧有一个非可选类型 '[[Bool]]',所以从不使用右侧
和
将强制向下转换为 '[[Bool]]' 作为可选将永远不会产生 'nil'
这是使用合并运算符的样子:
var purchased =
UserDefaults.standard.array(forKey: "purchased") as! [[Bool]] ??
[[true, false], [true, false], [true, false], [true, false], [true, false]] { //a is left, b is right
didSet {
//Do something
}
}
任何想法将不胜感激。谢谢。
【问题讨论】: