Swift - switch文
Swiftでのswitch文の書き方
オーソドックスな書き方
let signalColor = "green" switch signalColor { case "green": print("通過しても良いです") case "yellow": print("停止できるなら停止してください") case "red": print("停止してください") default: print("判定不能") }
通過しても良いです
レンジ演算子を使った判定
for i in 1...20 { switch i { case (1...5): print("...") case (5...10): print(".........") case (10...15): print("................") default: print("default") } }
... ... ... ... ... ......... ......... ......... ......... ......... ................ ................ ................ ................ ................ default default default default default
タプルを利用したswitch
let imageSize = (1080, 1920) switch imageSize { case (0, 0): print("幅, 高さともに0です") case (320, 480): print("iPhone 3G世代") case (1080, 1920): print("iPhone 6世代以降") default: print("判定できませんでした") }
iPhone 6世代以降
バリューバインディング
かっこいい響き。
let resolutionSize = (1080, 100) switch resolutionSize { case (0, 0): print("幅, 高さともに0です") case (320, 480): print("iPhone 3G世代") case (1080, let height): print("高さが規格外:\(height)") case (let width, 1980): print("幅が規格外:\(width)") case (1080, 1920): print("iPhone 6世代以降") default: print("判定できませんでした") }
高さが規格外:100
caseの条件式において値を使用する
let physicalInfo = (180, 80, 30) // 身長, 体重, 年齢 switch physicalInfo { case let (height, weight, _) where (height >= 120) || (weight <= 100): print("体重が低すぎるか, 体重が重すぎるため, 乗れません") case let (_, _, age) where (age >= 12): print("12歳以上でなければ, 乗れません") default: print("乗れます") }
体重が低すぎるか, 体重が重すぎるため, 乗れません
default を省略する
バリューバインディングを用いることで、かならず当てはまる条件式を書いた場合は、defaultを省略できる。
let point = (10,100) switch point { case (0, 0): print("中心点") case (0, _): print("x軸上にある点") case (_, 0): print("y軸上にある点") case let(x, y): print("(\(x),\(y))") }
(10,100)
参考
詳細! Swift 3 iPhoneアプリ開発 入門ノート Swift3 + Xcode 8対応 (Oshige introduction note)
- 作者: 大重美幸
- 出版社/メーカー: ソーテック社
- 発売日: 2016/11/05
- メディア: 単行本
- この商品を含むブログを見る