2017-07-26 14 views
2

三項演算子でORを使用するにはどうすればよいですか?ここで私は何をしようとしているのです:スウィフト三項演算子でORオペランドを使用する

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

+1

letname =(name == "John" || name == "Jack")? "Johnson": "Smith" –

+0

'(" John "||" Jack ")' - それはうまくいかないでしょうか? – josephmbustamante

+0

関連:[複数の値に対して1つの値を比較する方法 - Swift](https://stackoverflow.com/questions/32750139/how-to-compare-one-value-against-multiple-values-swift) –

答えて

5

使用ブラケット、および2番目の比較条件にname ==を追加し、私はコメントに最初に入れたように、この本は

3

使用ブラケット:あなたが最初に評価したいのでnameジョンのいずれかである場合

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

これらのブラケットが必要ですジャック前その結果を三項演算子に渡します。

また、すべてのC言語のように、 "John"と "Jack"と比較するために、質問のサンプルコードとは異なり、nameを2回言及する必要があります。あなたが二回名前を付けないようにしたい場合は

、あなたの代わりに書くことができます。

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

後者は、配列の機能を利用します。

1

を助け充当コード

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

希望です演算子の優先順位

の点に注意してください。

有効な条件を作成するには、角括弧を使用する必要があります。ブラケットを除き

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"