キャンペーンの今のうちに是非!!↓


⇒「ひろゆき『1%の努力』を無料で見る方法

【Swift奮闘記ep18】列挙型について(列挙型の定義やswitch文を使ったマッチング)

IPhoneアプリ作成Swift奮闘記

この本を見ながら進めてる↓

前回⇒「【Swift奮闘記ep17】ストラクチャ(ストラクチャの定義、できること、参照型と値型の違い、プロパティ・イニシャライザ)

今回は列挙型について説明していく。

列挙型とは「同じグループに入るデータ(値)をまとめる」機能である。

例えば「東」、「西」、「南」、「北」のような値は「方位」というグループに分類することができる。

それをプログラミング上で管理できるのが列挙型だ。

列挙型はswitch文と相性がいいので、その辺も見ていこうと思う。

ではスタート!

 

列挙型の定義

enum 列挙型名 {

列挙型に持たせる機能

}

で定義することができる。

classとかstructの部分がenumに変わっただけね。

{ }の中には値以外にも以下のようなものも記述できる。

  • プロパティの定義(計算型プロパティのみ)
  • メソッドの定義
  • サブスクリプトの定義
  • イニシャライザの定義
  • エクステンションによる機能拡張
  • プロトコルへの準拠

なんだか前回のストラクチャと似ているが、プロパティについて計算型プロパティのみ定義が可能な点が違う。

計算型プロパティを忘れた人は「【Swift奮闘記ep10】第4章Swiftとオブジェクト指向プログラミング(型、クラス、プロパティの前半)」をチェック。

 

値の定義

では実際に列挙型を定義してみよう。

クラスやストラクチャと同様に型推論が働いて変数宣言時に値を代入すると型が自動で決まる。

型が決まっていると、代入する時に型名を省略することができる。

(つまり今回は”Compass.east”とせずに”.east”でOKということ)

 

switch文を使ったマッチング

列挙型と相性がいいのはswitch文。

(switch文について復習する場合⇒「【Swift奮闘記ep5】演算子とか制御構文(条件分岐や繰り返し)とか」)

そもそもswitch文は列挙型を効率的に使えるような機能がついている。

〜〜〜の場合、○○○という処理を実行するという形になっている。

またswitch文の「すべてのパターンを網羅していなければいけない」というルールに注意して扱っていこう。(下記コードのようにdefaultにて対応する。)

northで”北”、defaultで”北以外”と表現してオッケーである。

 

列挙型についてはこれにて終了。

次回はプロトコル。こりゃやばいぜ・・・。

続き⇒「【Swift奮闘記ep19】プロトコルpart1(プロトコルの定義と準拠、プロパティ・メソッドの定義)

コメント