簡體   English   中英

Swift - 三元條件運算符誤解

[英]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 中,我試圖將此值設置為truenil (如果值為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM