この記事では「The Swift Programming Language」を1から読んだ感想とか発見を書いてみようと思います。
「The Swift Programming Language」とはSwiftの公式ドキュメントでiBooksや下ページで見る事ができます。
The Swift Programming Language: About Swift
読んだ所
今回はControl Flow
という項目を読みました。
The Swift Programming Language: Control Flow
学んだこと
Dictionaryのfor-in
Dictionaryのfor-inは下のように書きます。
1つ1つの要素はTupleで返ってくるので(key, value)
と宣言すればキーと値を取得できます。
let dic = ["A": 1, "B": 2, "C": 3] for (key, value) in dic { print(key) print(value) }
キーが不要な場合は_
を使って捨てる事もできます。
let dic = ["A": 1, "B": 2, "C": 3] for (_, value) in dic { print(value) }
Switchの条件
SwiftのSwitch文は下のように書きます。
breakが不要なのが嬉しいですね。
let value = 1 switch value { case 1: print(1) case 2: print(2) }
このcaseの部分ですが下のように複数条件を入れる事ができます。
let value = 1 switch value { case 1, 2, 3: print(1) case 4, 5: print(2) }
Rangeを入れる事もできます。
なぜかRangeを使う場合はdefault
を使用するよう言われたのでdefaultを追加しました。
let value = 1 switch value { case 1...3: print(1) case 4...5: print(2) default: break }
_を使うとdefaultと同じような動作を実現できます。
let value = 1 switch value { case _: print(2) // 常にこれは呼ばれる }
TupleのSwitch
TupleのSwitchは下のように書きます。
片方のプロパティーだけチェックしたい時は_を利用します。
let value = (1, 2) switch value { case (1, 2): print(1) case (1, _): print(2) case (0...2, 0...2): print(3) default: break }
Switchの値のbinding
Swiftでは下のようにcase内で変数の宣言ができます。
let value = (1, 2) switch value { case (let x, 2): print(x) // → 1 default: break
Tuple以外でも同様の事ができます。
この場合case let x:
はdefaultと同じような動きになります。
let value = 1 switch value { case let x: print(x) }
switch文内のwhere
Switch文ではwhereも使う事ができます。
let value = (1, 2) switch value { case (let x, let y) where value.0 == x: print(x) default: break }
Switchのfallthrough
fallthrough構文を使うと、一つ下のcase文を実行します。
Objective-cのbreakを入れ忘れた時と同じ動きです。
// この例だと1と2が出力される switch 1 { case 1: print(1) fallthrough case 2: print(2) case _: print(3) }