整数值?? 0 == -1? “-”:“+”是啥意思?
Posted
技术标签:
【中文标题】整数值?? 0 == -1? “-”:“+”是啥意思?【英文标题】:IntValue ?? 0 == -1? "-": "+" What does this mean?整数值?? 0 == -1? “-”:“+”是什么意思? 【发布时间】:2019-04-25 16:08:40 【问题描述】:我正在导入价格信息并添加 + 或 -。
我把标题代码放在 print() 中,它可以工作,但我不知道它是什么意思。
print("\(IntValue ?? 0 == -1 ? "-" : "+")")
请给我简单解释一下。
【问题讨论】:
【参考方案1】:凯文的回答很好。
一些有助于进一步解释的背景:
您发布的代码同时使用了两个相当神秘的运算符。
??
是零合并运算符。
它接受一个可选值,它可以包含 nil,并在它确实包含 nil 时提供一个新值。
编辑:
(请注意,您可以跳过 nil-coalescing 运算符并改用 IntValue == -1
。这是因为只有 -1
的非 nil 值等于 -1
。包含 nil 的可选项不等于-1
.
你可以将这一行改写为
print("\(IntValue == -1 ? "-" : "+")")
并得到相同的结果。)
下一个棘手的问题是“三元运算符”。这来自 C。它非常神秘,但也非常有用。
它采用boolean
的形式? value_for_true
: value_for_false
其中boolean
是一个布尔表达式,计算结果为true
或false
。
如果boolean
为真,那么整个三元表达式的结果就是value_for_true
子表达式。
如果boolean
为假,则整个三元表达式的结果就是value_for_false
子表达式。
IntValue ?? 0 == -1
是三元表达式的布尔部分。如果 IntValue 为 -1,则评估为真。如果 IntValue 包含任何其他值,或者它包含 nil,则它评估为 false。
(注意变量和let常量应该以小写字母开头,所以IntValue
应该是intValue
。)
【讨论】:
【参考方案2】:变量IntValue
是可选的,这意味着它可以是整数或nil
。 IntValue ?? 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("+")
【讨论】:
我认为应该是if IntValue != nil
,因为如果不是nil
,你只想使用IntValue
的值;否则使用0
War10ck 是对的。那行应该是if IntValue != nil
以上是关于整数值?? 0 == -1? “-”:“+”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
the hash for the file is not present in the specified catalog file,是啥意
UART蓝牙通信问题 向UART发送数据的正确格式是啥(整数值)