swift - 整数值 ?? 0 == -1? "-": "+" What does this mean?

标签 swift ternary-operator

我正在导入价格信息并添加 + 或 -。

我把标题代码放在 print() 中,它可以工作,但我不知道它是什么意思。

print("\(IntValue ?? 0 == -1 ? "-" : "+")")

请简单解释一下。

最佳答案

Kevin 的回答非常好。

一些有助于进一步解释的背景:

您发布的代码同时使用了两个相当神秘的运算符。

?? 是零合并运算符。

它采用一个可选值,可以包含 nil,并在它确实包含 nil 时提供一个新值以供使用。


编辑:

(请注意,您可以跳过 nil 合并运算符并使用 IntValue == -1 代替。这是有效的,因为只有 -1 的非 nil 值是等于 -1。包含 nil 的可选值不等于 -1

您可以将该行重写为

print("\(IntValue == -1 ? "-" : "+")")

并得到相同的结果。)


下一个棘手的问题是“三元运算符”。这来自 C。它非常神秘,但也非常有用。

它采用 boolean 的形式? value_for_true : value_for_false

其中 boolean 是一个 bool 表达式,计算结果为 truefalse

如果boolean为真,那么整个三元表达式的结果就是value_for_true子表达式。

如果 boolean 为假,则整个三元表达式的结果是 value_for_false 子表达式。

整数值 ?? 0 == -1 是三元表达式的 bool 部分。如果 IntValue 为 -1,则计算结果为真。如果 IntValue 包含任何其他值,或者如果它包含 nil,则评估为 false。

(注意变量和 let 常量应该以小写字母开头,所以 IntValue 应该是 intValue。)

关于swift - 整数值 ?? 0 == -1? "-": "+" What does this mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53440022/

相关文章:

arrays - 在 Swift 中将两个 NSPredicates 与独立的 NSSortDescriptors 结合起来

xcode - 在 iOS 上开发 Microsoft Band

ruby - 具有 "defined?"的三元表达式返回 "expression"而不是值?

ios - 独特的 Realm 容器对象

ios - 声明在同一文件中时枚举中未声明的类型

ios - Swift 如何更改 withBlock 语句中的外部对象值

reactjs - react : Ternary operation in JSX produces "Unexpected token" error

c - 具有多个语句的三元运算符

c++ - 三元运算符 vs if 语句 : compiler optimization

string - Shell 脚本三元运算符获取字符串结果