什么??和?指SWIFT

时间:2015-10-01 21:49:27

标签: swift

我看到了这种代码风格:

var Text = textField.text ?? ""

是吗?也意味着:

textField.text = ""

我看到的另一种编码风格是:

let switch: CGFloat = self.switchControl.on ? 1 : 0

是什么?在这种情况下意味着这里。

3 个答案:

答案 0 :(得分:0)

? :是内联if语法,通常用于缩短条件语句。此

let switch: CGFloat = self.switchControl.on ? 1 : 0

相当于:

let switch : CGFloat
if self.switchControl.on {
    switch = 1
} else {
    switch = 0
}

??表示如果不为null,则返回表达式,否则返回替代值。它相当于:

var Text = textField.text != nil ? textField.text! : ""

答案 1 :(得分:0)

?是三元运算符。它的一般形式为condition ? true-value : false-value。您可以将其视为编写if语句的简写 - 评估条件,如果是,则返回true-value。否则,返回false-value。在您的示例中:self.switchControl.on ? 1 : 0self.switchControl.on被评估,如果是true,则返回1,否则返回0

??nil合并运算符。如果第一个参数不是nil,则返回它,如果是,则返回第二个参数。在您的示例中,表达式textField.text ?? ""如果不是textField.text则返回nil,如果是""则返回$.getJSON( "http://api.openweathermap.org/data/2.5/weather?zip=43452,us&APPID=6c62bbbc17614bb4c0cae3095e0b5a89", function(obj) { $.each(obj.main, function(key, val) { your_global_var = val.temp; }); });

答案 2 :(得分:0)

第一个声明称为 nil coalescing operator ,它等同于写作:

var Text: String
if textField.text != nil {
    Text = textField.text!
} else {
    Text = ""
}

其中英文单词的意思是:评估左表达式,如果它不是nil unwrap并返回它,否则返回正确的表达式。

?: 三元条件运算符是一个类似但不同的运算符:它计算逻辑表达式(位于?运算符的左侧),如果它是'这是'左边表达式的结果:'返回运算符,否则返回右侧表达式的结果。

两个运算符之间的基本区别在于前者在确定要返回的表达式时检查nil / not nil,在后一种情况下它是?运算符左侧的逻辑表达式确定返回以下2个表达式值中的哪一个。