我看到了这种代码风格:
var Text = textField.text ?? ""
是吗?也意味着:
textField.text = ""
我看到的另一种编码风格是:
let switch: CGFloat = self.switchControl.on ? 1 : 0
是什么?在这种情况下意味着这里。
答案 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 : 0
,self.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个表达式值中的哪一个。