前回は 構造体 について書きました。
今回は 三項演算子 について書いていこうと思います。
三項演算子とは
三項演算子とは、オペランド(被演算子)を 3 つ必要とする演算子で、Bool値 ( true , false ) によって代入する値を分岐できる演算子です。
簡単な分岐であれば、1 行のコードで if文 と同じ処理をする事ができます。
if文 を使って分岐するほどではない時に使います。
if文 についてはこちらの記事で紹介しています。
三項演算子の書式
条件式 ? trueだった場合の値 : falseだった場合の値
条件式 の後に ? マークを書きます。
その後に、
true だった場合の値 : false だった場合の値
を書きます。
条件式の結果が
true であれば左辺の値、
false であれば右辺の値
が代入されます。
三項演算子を使った例
整数の大きさによって処理を分岐する例です。
var hp = 60
var strategy: String
//三項演算子の例
strategy = hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ガンガンいこうぜ
変数 hp には 60 が代入されています。
条件式は hp の値が 50 以下( 50 も含まれる)であれば true 、それ以外であれば false となります。
上の例では、hp の値が 50 以上なので false となり、右辺の値が 変数 strategy に代入されます。
比較演算子 についてはこちらの記事で紹介しています。
if文 で書いた場合
上のコードを if文 で書いた場合の例
var hp = 60
var strategy: String
//三項演算子の例
strategy = hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ガンガンいこうぜ
//上のコードをif文で書いた場合
if hp <= 50 {
strategy = "いのちだいじに"
} else {
strategy = "ガンガンいこうぜ"
}
print(strategy) //ガンガンいこうぜ
三項演算子を使った分岐は print関数 を抜かすと 1 行で書けるのに対し、同じ処理を if文 で書くと 5 行になってしまいます。
このぐらいの単純な分岐であれば三項演算子を使った方が可読性が高いかもしれません。
分岐を増やしたい場合
分岐を増やしたい場合の書式
条件式a ? trueだった場合の値a : 条件式b ? trueだった場合の値b : falseだった場合の値
条件式 a の後に ? true だった場合の値 a と書きます。
コロン : を書いて 条件式 b を書きます。
その後に ? trueだった場合の値 b : falseだった場合の値
を書きます。
コードが読まれていく順序
最初の 条件式 a が true であれば true だった場合の値 a が代入される。
↓
false であれば次の 条件式 b に進む
↓
条件式 b が true であれば true だった場合の値 b が代入される
↓
false であれば false だった場合の値 が代入される
↓
という流れになります。
三項演算子を使って分岐を増やしたい場合の例
var hp = 0
var strategy: String
//分岐を増やしたい場合の例
strategy = hp == 0 ? "ザオラル!" : hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ザオラル!
条件に 変数hp の値が 0 だった場合の処理を追加しました。
if文 で書いた場合
上のコードを if文 で書いた場合の例
var hp = 0
var strategy: String
//分岐を増やしたい場合の例
strategy = hp == 0 ? "ザオラル!" : hp <= 50 ? "いのちだいじに" : "ガンガンいこうぜ"
print(strategy) //ザオラル!
//上のコードをif文で書いた場合の例
if hp == 0 {
strategy = "ザオラル!"
} else if hp <= 50 {
strategy = "いのちだいじに"
} else {
strategy = "ガンガンいこうぜ"
}
print(strategy) //ザオラル!
2 択の単純な分岐であれば三項演算子を使った分岐の方が短いし楽ですが、分岐が増えてくると 1 行とはいえ見づらいと思います。
分岐が増えるかもしれない場合は最初から if文 や switch文 を使った方がいいかもしれません。
以上 三項演算子 についてでした。
次回は タプル について書いていこうと思います。
実行環境
version |
---|
Xcode 14.2 (14C18) |
Swift 5.2.4 |
公式ドキュメント
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/