あぁ、今までこれ使ってなかった。Optionalはswitchできないと思ってguardとかで一旦中身を取り出していました。caseに?をつけることでswitchできたんですね。
例です。
ちょっとわかりづらいんですが、この例ではnumberはnが2000より大きい場合nilになります。
let n = Int(arc4random_uniform(3000)) let number: Int? = n > 2000 ? nil : n switch number { case 0?: print("Zero") case (1..<1000)?: print("Number is less than 1000") case .Some(let x): print("Number is \(x)") case .None: print("None") }
こうすることで、nilの場合は「None」が出力されて、値がある場合はその値が「Number is 値」という形で出力されて、0以上、1000以下の場合はそれぞれのケースに入ってきます。まぁ、.Someでwhereを書いても良いかも。
Functional Swift を読んでいる中で出てきました。