1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

switch文 範囲指定

Last updated at Posted at 2020-11-11

#概要
switch文の条件の範囲の指定方法について記述してみました。
自分自身switch文の条件には特定の値しか設定できないと思っていたので、自分で振り返る意味でも残しておきます。

#記述
switch文は制御式の値に応じて実行する命令を切り替えるもの。

ViewController.swift
switch 制御式{
case 条件1:
    //条件1に当てはまる場合の処理
case 条件2:
    //条件2に当てはまる場合の処理
default:
    //どの条件にも当てはまらなかったっ場合の処理
}

条件に範囲がなく特定のものは問題なく記述できますが、以下のようなif文をswitch文に置き換える場合はどのようにすればいいでしょうか?

ViewController.swift
let number: Int!
if number > 0 {
    // numberが正のときの処理
} else if number < 0 {
    //numberが負のときの処理
} else {
    //numberが0のときの処理
}

このような時は、Int.minInt.maxを用います。
Int.minは整数型の取りうる最小値を表し、Int.maxは整数型の取りうる最大値を表しています。
整数の最大値、最小値と考えると+∞、−∞を思い浮かべますがデータ上は異なります。
整数の最大値は9223372036854775807、最小値は-9223372036854775807です。
桁が莫大なので実質+∞、−∞と考えていいと思います。
ということで、これを使ってswitch文を作ります。
[追記]ランダムの範囲が整数型全てであった時、1..<Int.maxではInt.maxが正の整数の範囲外になってしまうので1...Int.maxと修正しました

ViewController.swift
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で中断します。

ViewController.swift
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文のみで解決してきたところがあったので、
内容に間違いがあるかもしれません。その際はご指摘のほどよろしくお願いします。

##参考文献
この記事は以下の情報を参考にして執筆しました。

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?