Edited at

[Swift] Int型などの値が範囲内に入っているかチェックする

More than 1 year has passed since last update.

駄文です

関数に渡されたInt型などの値が適正範囲内であるかをチェックする時、C言語的な文法に引きずられて

if 0 < number && number < 5 { ... }

などと書いたりしてないでしょうか?

Swiftでは見た目で何をしているかがすぐわかる記法が備わっています。

if (1...4).contains(number) { … }

if 1...4 ~= number { … }

(コメントで皆さんにより簡素でわかりやすい記法を教わりました)

if case 1...4 = number { ... }

誰がどう見ても 1, 2, 3, 4のいずれかですね。

数値が近くに並んであるのがいいです。

不等号の向きを見間違えたり打ち間違えたり、逆を取るときに && を || に変換し忘れたりなどの問題が起こりません。


@lovee さんのコメントも気になって調べて書いてみました。

稚拙だと思うのでGistのリンクだけ。

https://gist.github.com/anonymous/171deb51bfb85f045b22e2b76157cae5


ややこしくするなら

enum Number: Int {

case one = 1
case tow = 2
case three = 3
case four = 4
}

if let _ = Number(rawValue: number) { ... }

ですね!(ダメです)