Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Swiftのswitch-case文が柔軟すぎて気持ち悪い

iOS4.3以来のiOS開発をすることになり、iOS7以上でいいんでSwiftで実装することに決めた。絶対、今のほうが楽だ。当時はARCがなくてシビアなコード書いたわー。すぐ落ちたりしたわー。

Swift離陸ガイド

Swift離陸ガイド

上記の本を買った。とにかく日本語で1時間ぐらいでSwiftをウォークスルーしたかったので。英語だと3倍の時間がかかるからね・・・。

正しくはThe Swift Programming Language: About Swiftを当たるべきっす。仕様が変わる可能性があるので。

で、一番びっくりしたのがswitch文。やたらいろんな条件を入れることが出来る。

let vegitable = "red pepper"
switch vegitable {
case "celery" :
    let vegetableComment = "Add some raisins"
case "cucumeber","watercress" :
    let vegetableComment = "great taste"
case let x where x.hasSuffix("pepper") :
    let vegetableComment = "'Red Hot Chili Pepper"
default :
    let vegetableComment = "Pacfic"
}

letってのは定数のこと。すごいのがカンマで複数の条件を列挙できるのと、whereキーワードによってLINQのようなメソッドチェーンができること。キモい。

また、タプルもswitchに入れることが出来る。

let somePoint = (0,10)
switch somePoint {
    case (0,0) :
        println("(0,0) is origin")
    case (_,0) :
        println("タプルの2番めが0ならマッチ!")
    case (0,_) :
        println("タプルの1番めが0ならマッチ!")
    case (3...6,4...10) :
        println("タプルの1番めが3-6で、2番めが4-10ならマッチ")
    default :
        println("Nothing Found")
}

タプルの「_」は何でもOKのことで、...ってのは範囲指定。何でも比較できるけど、程々にしよう。