この記事では「The Swift Programming Language」を1から読んだ感想とか発見を書いてみようと思います。
「The Swift Programming Language」とはSwiftの公式ドキュメントでiBooksや下ページで見る事ができます。
The Swift Programming Language: About Swift
読んだ所
今回はEnumerations
という項目を読みました。
The Swift Programming Language: Enumerations
学んだこと
値付きの列挙型
enum Enum { case Value1(String) case Value2 case Value3(Int) }
変数を作る際は下のように書きます。
let e = Enum.Value1("AAA")
Swift2.0では下のように変数なしもできるようになったみたいです。
let e = Enum.Value1
switchの書き方
Switchは下のように書きます。
let e = Enum.Value1("AAA") switch e { case .Value1("A"): // これは引っかからない print(1) case .Value1("AAA"): // これは引っかかる print(2) case .Value1(_): // これはValue1ならなんでも引っかかる print(3) case .Value1: // これもValue1ならなんでも引っかかる print(33) case .Value2: print(4) case .Value3(1): print(5) }
下のように中身を変数として取得する事もできます。
let e = Enum.Value1("AAA") switch e { case .Value1(let a): // これはValue1ならなんでも引っかかる print(a) case let .Value1(a): // この書き方もできる、中身に1つ1つletを書く必要がないので複数の値を持つ場合に楽 print(a) }
再帰的なenum
Swift2.0から再帰的なEnumを作れるようになりました。
その際はindirectを付ける必要があります。
indirect enum Enum { case Value1(String) case Value2 case Value3(Enum) }
caseに対してindirectを付けても良いです。
enum Enum { case Value1(String) case Value2 indirect case Value3(Enum) }