[英]Swift - Ternary conditional operator misunderstanding
我在理解 Swift 4.1 中的三元條件運算符時遇到問題。 我希望有人能向我解釋:)
我正在使用 Apollo 庫。 這個庫向我展示了一個 object 這個字段(編輯):
public var discount: Swift.Optional<Bool?> {
get {
return graphQLMap["discount"] as! Swift.Optional<Bool?>
}
set {
graphQLMap.updateValue(newValue, forKey: "discount")
}
}
在我的 class 中,我試圖將此值設置為true
或nil
(如果值為false
,返回所有結果應該為nil
)。
嘗試 #1:
func setGoodDeals(_ goodDeals: Bool) {
filters.discount = goodDeals ? goodDeals : nil;
}
這是行不通的; 我的應用程序因此錯誤而崩潰:
無法將類型“Swift.Optional”(0x10a9fa298)的值轉換為“Swift.Bool”(0x10a9cddf8)。
嘗試#2:
if ( goodDeals ) {
filters.discount = goodDeals;
} else {
filters.discount = nil;
}
這行得通。
嘗試 #3:
func setGoodDeals(_ goodDeals: Bool) {
filters.discount = goodDeals ? true : nil;
}
這行得通。
誰能向我解釋為什么?
提前致謝,
很簡單的。 它是這樣工作的。
假設我們必須根據 bool 'isNewUser' 傳遞字符串。
yourLable.text = isNewUser? “你能得到”:“你得到”
如果“isNewUser”為真,那么它將通過“你可以得到”,否則它將通過“你得到”。
我希望它非常清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.