2017-07-26 80 views
2

如何在三元運算符中使用OR?這裏就是我想要做的事:在Swift三元運算符中使用OR操作數

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

+1

let surname =(name ==「John」|| name ==「Jack」)? 「約翰遜」:「史密斯」 –

+0

'(「約翰」||「傑克」) - 不會工作嗎? – josephmbustamante

+0

相關:[如何比較一個值與多個值 - Swift](https://stackoverflow.com/questions/32750139/how-to-compare-one-value-against-multiple-values-swift) –

回答

5

使用括號,並在你的第二個比較條件添加name ==,當我把第一次的評論,這是撥碼

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

希望這有助於

3

使用括號:因爲你要評估第一,如果name要麼約翰傑克

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

這些括號是必須的將結果「傳遞」給三元操作員。

此外,與所有類似於C的語言一樣,爲了將其與「John」和「Jack」進行比較,您不得不提及name兩次,與您問題中的示例代碼不同。

如果你想避免命名兩次,你可以代替寫:

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

後者利用陣列的功能。

1

請注意運算符優先級的

您應該使用括號來形成有效的條件。

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

或者

let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith" 
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"