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

时间:2017-07-26 18:25:20

标签: ios swift ternary-operator

如何在三元运算符中使用OR?这就是我要做的事情:

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

5 个答案:

答案 0 :(得分:5)

使用括号,并在第二个比较条件中添加name ==,正如我在评论中首先提到的那样,这是适当的代码

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

希望这有帮助

答案 1 :(得分:3)

使用括号:

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

这些括号是必要的,因为在将结果“传递”给三元运算符之前,首先要评估name John 还是 Jack 。< / p>

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

如果您想避免两次命名 name ,您可以改为编写:

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

后者使用数组的contains()函数。

答案 2 :(得分:3)

可选地

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

答案 3 :(得分:1)

请注意运营商优先级

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

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

答案 4 :(得分:1)

除括号外,您还可以将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"