対象:
Swift

Switch文(Swift)

SwiftのSwitch文はCのそれと似ているがcaseにbreakは必要ない。breakがなくても処理は下のcaseに継続しない。caseで範囲演算子(...)も使えるので、数値を判定するときには便利だ。

SwiftのSwitch文がCのそれと大きく異なるのは、Switch文が網羅的(switchの条件式が、必ずcaseのどれかに当てはまる)でなければならないということだ。さもないと、コンパイル時にエラーとなる。それ故、Switch文には基本的にdefault節を置くのだが、caseにワイルドカード(_)も使えるので、以下のように書くこともできる。

        // 数値の例
        var n = 3
        switch n {
        case 0 :
            print("nは0です。")
        case 1...9 :
            print("nは1-9です。")
        case _ :
            print("別な形のdefault")
        //default :
        //    print("default")
        }

もちろん、文字列もSwitch文で判定できる。カンマで区切れば1つのcaseに複数の値を書くこともできる。

        // 文字列の例
        let s = "zero"
        switch s {
        case "one" :
            print("sは1です。")
        case "two" :
            print("sは2です。")
        case "three" :
            print("sは3です。")
        case "four", "five" :
            print("sは4または5です。")
        default :
            print("sは1-5ではありません。")
            break
        }

Switch文では通常、あるcaseからその下のcaseに処理を継続させることはできない。しかし、fallthroughを使えば処理を継続させることもできる。以下は例として今一つなのだが、最初のcase節にの最後にfallthroughがあるので、続けてdefault節の処理も行う。

        // fallthroughの例
        var intType = "UInt64"
        var message = "\(intType)は"
        switch intType {
        case "UInt", "UInt8", "UInt16", "UInt32", "UInt64" :
            message += "符号なし"
            fallthrough
        default :
            message += "整数です。"
        }
        print(message)

つまり、上記の実行結果は以下のようになる。

UInt64は符号なし整数です。

尚、breakにも使い道はある。それはdefault節で何も処理を行わないときだ。case節、またはdefault節には最低1つは何か処理を書かないとコンパイルエラーとなるが、default節で何も処理をしたくないときbreakを書けば良い。

        default :
            break
(2015/02/04)
(2015/09/27 更新) Swift 2.0対応。

新着情報
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)
【iOS Objective-C, Swift Tips】ウィンドウの階層構造を3D表示する(Swift)

Copyright(C) 2004-2016 モバイル開発系(K) All rights reserved.
[Home]