我使用的是斯威夫特,我想知道如何在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
}
}
我知道这可能需要一些时间来实现我的意思,我尽我所能来解释它。
编辑---> 编译器说:
零合并运算的 '?'左侧具有非可选类型“[[BOOL]]”,所以右侧从未使用
和
治疗被迫向下转换到“[[BOOL]]”为可选永远生产“零”
这是它看起来像使用合并运算:
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
}
}
任何想法将极大地更加感激ated。谢谢。
感谢您的。现在的问题是a是可选的,b不是。所以根据编译器,b将永远不会被使用,因为它是非可选的。 –
对我来说,这个编译和完美工作没有抱怨。文档中的情况是相同的(a是可选的,b不是)。如果您的上下文更复杂,请在您的问题中添加其他信息。 – Gerriet
它说:“零合并运营商的左侧??”有一个非可选类型'[[Bool]]',所以右侧从不使用“。对你而言是可选的,而不是?我现在将在帖子中添加我的确切数字。 –