Swift IntValue??0 == -1? &引用-&引用;:&引用+&引用;这是什么意思?
我正在导入价格信息并添加+或- 我将标题代码打印出来(),它可以工作,但我不知道它是什么意思Swift IntValue??0 == -1? &引用-&引用;:&引用+&引用;这是什么意思?,swift,ternary-operator,Swift,Ternary Operator,我正在导入价格信息并添加+或- 我将标题代码打印出来(),它可以工作,但我不知道它是什么意思 print("\(IntValue ?? 0 == -1 ? "-" : "+")") 请给我简单解释一下。变量IntValue是可选的,这意味着它要么是整数,要么是nil输入值??0表示如果存在IntValue,则使用IntValue的值。如果IntValue为nil,则使用值0。接下来,将该值与-1进行比较。如果该值等于-1,则打印-。如果该值不等于-1,则打印+ 下面是仅包含if语句的等效代码:
print("\(IntValue ?? 0 == -1 ? "-" : "+")")
请给我简单解释一下。变量
IntValue
是可选的,这意味着它要么是整数,要么是nil
<代码>输入值??0表示如果存在IntValue
,则使用IntValue
的值。如果IntValue
为nil
,则使用值0。接下来,将该值与-1进行比较。如果该值等于-1,则打印-
。如果该值不等于-1,则打印+
下面是仅包含if语句的等效代码:
var defaultInt = 0
if IntValue != nil {
defaultInt = IntValue! // force unwrap the optional value
}
if defaultInt == -1 {
print("-")
}
else {
print("+")
}
凯文的回答很好 有助于进一步解释的一些背景: 您发布的代码同时使用了两个相当神秘的运算符
?
是零合并运算符
它接受一个可选值,该值可以包含nil,并在不包含nil时提供一个新值以供使用
编辑: (请注意,您可以跳过nil合并运算符,改用
IntValue==-1
。这是因为只有-1
的非nil值等于-1
。包含nil的可选值不等于-1
)
你可以把这句话改写成
print("\(IntValue == -1 ? "-" : "+")")
并得到相同的结果。)
下一个棘手的问题是“三元运算符”。这来自C语言,它非常神秘,但也非常有用 它的形式为
布尔值
<代码>值为真:值为假
其中,boolean
是一个布尔表达式,其计算结果为true
或false
如果boolean
为真,则整个三元表达式的结果为value\u for_-true
子表达式
如果boolean
为false,则整个三元表达式的结果为\u false子表达式的值
IntValue??0==-1
是三元表达式的布尔部分。如果IntValue为-1,则其计算结果为true。如果IntValue包含任何其他值,或者如果它包含nil,则其计算结果为false
(注意变量和let常量应该以小写字母开头,因此IntValue
应该是IntValue
)如果IntValue!=nil
因为您只想使用IntValue
的值,如果它不是nil
;否则使用0
War10ck是正确的。如果IntValue!=无