在Swift三元运算符中使用OR操作数

问题描述:

如何在三元运算符中使用OR?这里就是我想要做的事:在Swift三元运算符中使用OR操作数

let surname = name == "John" || "Jack" ? "Johnson" : "Smith"

+1

let surname =(name ==“John”|| name ==“Jack”)? “约翰逊”:“史密斯” –

+0

'(“约翰”||“杰克”) - 不会工作吗? – josephmbustamante

+0

相关:[如何比较一个值与多个值 - Swift](https://*.com/questions/32750139/how-to-compare-one-value-against-multiple-values-swift) –

使用括号,并在你的第二个比较条件添加name ==,当我把第一次的评论,这是拨码

let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith" 

希望这有助于

使用括号:因为你要评估第一,如果name要么约翰杰克

let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith" 

这些括号是必须的将结果“传递”给三元操作员。

此外,与所有类似于C的语言一样,为了将其与“John”和“Jack”进行比较,您不得不提及name两次,与您问题中的示例代码不同。

如果你想避免命名两次,你可以代替写:

let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith" 

后者利用阵列的功能。

请注意运算符优先级的

您应该使用括号来形成有效的条件。

let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith" 

或者

let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith" 

除了括号,你也可以使用的情况下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"