我使用的是斯威夫特,我想知道如何在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]]',所以右側從不使用「。對你而言是可選的,而不是?我現在將在帖子中添加我的確切數字。 –