#概要
switch文の条件の範囲の指定方法について記述してみました。
自分自身switch文の条件には特定の値しか設定できないと思っていたので、自分で振り返る意味でも残しておきます。
#記述
switch文は制御式の値に応じて実行する命令を切り替えるもの。
switch 制御式{
case 条件1:
//条件1に当てはまる場合の処理
case 条件2:
//条件2に当てはまる場合の処理
default:
//どの条件にも当てはまらなかったっ場合の処理
}
条件に範囲がなく特定のものは問題なく記述できますが、以下のようなif文をswitch文に置き換える場合はどのようにすればいいでしょうか?
let number: Int!
if number > 0 {
// numberが正のときの処理
} else if number < 0 {
//numberが負のときの処理
} else {
//numberが0のときの処理
}
このような時は、Int.minやInt.maxを用います。
Int.minは整数型の取りうる最小値を表し、Int.maxは整数型の取りうる最大値を表しています。
整数の最大値、最小値と考えると+∞、−∞を思い浮かべますがデータ上は異なります。
整数の最大値は9223372036854775807、最小値は-9223372036854775807です。
桁が莫大なので実質+∞、−∞と考えていいと思います。
ということで、これを使ってswitch文を作ります。
[追記]ランダムの範囲が整数型全てであった時、1..<Int.max
ではInt.maxが正の整数の範囲外になってしまうので1...Int.max
と修正しました
let number = Int.random(in: -100...100)
switch number{
case 1...Int.max:
//numberが正のときの処理
//[追記]1..<Int.maxの場合Int.maxが範囲外
case Int.min..<0:
//numberが負のときの処理
default:
//numberが0のときの処理
}
Int.maxなどを用いずに範囲指定したい場合も実行できます。
処理を行わない時はbreakで中断します。
let number = Int.random(in: 0...10)
switch number{
case 1...5:
//numberが1~5のときの処理
case 6...10:
//numberが6~10のときの処理
default: break
}
#最後に
自分自身、あまりswitch文を用いずにif文のみで解決してきたところがあったので、
内容に間違いがあるかもしれません。その際はご指摘のほどよろしくお願いします。
##参考文献
この記事は以下の情報を参考にして執筆しました。