在 Swift 三元运算符中使用 OR 操作数
Posted
技术标签:
【中文标题】在 Swift 三元运算符中使用 OR 操作数【英文标题】:Using OR operand in a Swift ternary operator 【发布时间】:2018-01-02 05:41:29 【问题描述】:如何在三元运算符中使用 OR?这是我正在尝试做的事情:
let surname = name == "John" || "Jack" ? "Johnson" : "Smith"
【问题讨论】:
让 surname = (name == "John" || name == "Jack") ? “约翰逊”:“史密斯”("John" || "Jack")
- 不是这样吗?
相关:How to compare one value against multiple values - Swift
【参考方案1】:
使用括号,并在第二个比较条件中添加name ==
,正如我在评论中首先提到的,这是适当的代码
let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith"
希望对你有帮助
【讨论】:
【参考方案2】:使用括号:
let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith"
这些括号是必要的,因为您想先评估 name
是 John 还是 Jack,然后再将结果“传递”给三元运算符。
此外,与所有类似 C 的语言一样,您必须提及 name
两次,这与您问题中的示例代码不同,以便将其与“John”和“Jack”进行比较。
如果你想避免两次命名name,你可以改写:
let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith"
后者利用了数组的contains()
函数。
【讨论】:
【参考方案3】:除了括号,你还可以使用 array.contains 来处理名称很多的情况,这可能会使括号代码变长且不可读。
let name = "Three"
let nameList = ["One", "Two", "Three", "John", "Jack", "Vlatko"]
let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith"
let surnameAlternate = nameList.contains(name) ? "Johnson" : "Smith"
【讨论】:
【参考方案4】:或者
let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith"
【讨论】:
【参考方案5】:请注意运算符优先级
你应该使用括号来形成有效的条件。
let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith"
【讨论】:
以上是关于在 Swift 三元运算符中使用 OR 操作数的主要内容,如果未能解决你的问题,请参考以下文章