Swift基本講座

列挙型の宣言と使用

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
Swiftでの列挙型の使い方を説明します。列挙型を使うことで、取り得る可能性のある値をあらかじめリストアップしておき、switch文などで安全に処理を振り分けることができます。
講師:
07:33

字幕

このレッスンでは Swift の 列挙型の使い方を説明します 列挙型はいくつかの選択肢を 用意したい時に利用することができます こちらの例をご覧ください こちらはまだ列挙型を使っていない 例になりますが playerItem という変数を用意して RPG のプレーヤーが武器を 持っていない状態を0 持っている状態を1だったら 剣として 2だったら盾として用意しています 今は1を代入していますので 剣を持っているものとして この switch 文の中で 1番であれば「剣を装備しています。」の ように表示されるようになっています こちらのプログラムはこのままでも 動くんですが この playerItem を Int 型に今 してることによって 値のとり得る範囲が かなり膨大なものになってしまうので 場合によっては この playerItem の中に 例えばよく分からない数字 例えば 12345 といったような 値が入ってしまって 武器を持っていないことになると 或いはとてつもなく変な武器を もっている状態になるということが 今起きるようになってしまっています これ Int 型で宣言しているのか 問題なのかということで Int 型以外で何か他に 宣言する方法はないのかといって この Int 型の代わりになるものを 見てみますと これ Int 型は基本的には 32 ビットの Int 型なんですが 16 ビット 32 ビット 64 ビット 或いは 8 ビットの Int 型を 使うということもできるんですが 8 ビットの Int 型を使ったところで 256 パターンの数が出てしまいますので やはり選択肢を用意するという意味では あまり向いていない方法だと 言うことができます じゃあ Int 型にしているのが 問題なのではないのかということで Int 型のこの 0, 1, 2 に代えて 例えば武器を持っていないということを None というこういう文字列 剣を持っていることを Sword という文字列 盾を持っていることを Shield という 文字列で表せばいいんじゃないかと いうことでここを String 型に変えてみると いうこともできます そうすると剣を持っているということを この Sword で表して 武器を持っていない場合 これ switch というのは ちゃんとこのように 文字列にも対応していますから 文字列を使って case を書いて このように「剣を装備しています。」という 状態をこうやって書くこともできるんですが これまた残念ながら playerItem に対して入れられる文字列は 膨大な可能性がありますので playerItem = "Banana" と いうふうに書かれてしまうと やはりよく分からないものを持ってる 状態が生まれてしまうという こういう問題があります そこで Swift の列挙型というのは とり得る値を予めリストアップして 新しい型を作っておくというのが Swift の列挙型の考え方です 列挙型の作り方は非常に簡単で Objective-C とか 使ったことのある人は 既に似たような文法でよく目にする 書き方なんですが enum Item という風にまず この Item という型を作りますよと いうことを宣言する為に enum というキーワードを使って このように宣言します ここまでは Objective-C の書き方と 同じなんですが 1つ違うのは この後ろには case という書き方をします case の後ろに Item を持っていない状態を case None Item Sword を持っている状態を case Sword そして Shield を持っている状態を case Shield という風に switch と同じなんですね switch と同じように case を使って このように None Sword Shild という風に 値を列挙していきます こちらの case というキーワードが 必ず必要でして これ case の後ろにコンマを使って 列挙していくことによって この case を繰り返し書かなくても 1つの case で後ろはコンマで つなげるという形でも enum を書くことはできるんですが それよりはこのように case を1行に 1つずつ書いていくことによって これが武器がない状態を示しているとか 剣を持っている状態を示していると いったようにコメントをつけることが できますので1行に1つ case を書いていくという方法を 個人的にはお勧めしたいと思います このようにすることで プレーヤーが持っているアイテムが 持っていないのか Sword なのか Shield なのかということを 3パターンで表す新しい Item という 型ができましたので 先程まで Int 型とか String 型とかで 使っていた― この playerItem の変数を この Item 型で宣言してやります Item 型で宣言する時 この Item の一番最初の状態は アイテムを何も持っていないと いうような状態で宣言します これは勿論推論がききますので このコロンを書かなくても Item None を入れますよと書いてやると この playerItem は ずっとこの Item 型であるということが 保証されますので この後ろの Banana を 代入しようとしている所でも 既にエラーが起きていますが 24 とか Int 型の数値を 代入しようとしてもエラーが起きます 必ずここは Item の型が来ないといけないと playerItem に対して何か代入する時には 勿論このように Item. と書いてやることで この Shield か Sword かということを 選択することができます このように Item. という所まで入力すると この後ろの入力を勝手に補完してくれるので 非常に簡単に入力することができますし 入力が終わった後は この先頭に来ているのが Item だと 明示しなくても既に最初 Item. None を 代入した時点で Item 型だということが 保証されていますので Item を消してしまって .Sword と書くだけで 問題なくコンパイルが通る コードになってくれます あとはこの playerItem が この case で処理される時も これも Item 型に対する switch 文だと Swift はちゃんと理解してくれますから case の後ろが .None case の後ろが .Sword そして case の後ろが .Shield ですよと いうことまで書いてしまえば これはもう None と Sword と Shield しかありませんということが 保証されていますので default の case を書かなくても しっかりとどういう武器を持っているのかを 見て処理を振り分けてくれます いくつかの選択肢を用意して それを予めリストアップしておきたい時には この列挙型を使うということを 是非マスターしていただきたいと思います このレッスンでは 列挙型の使い方を説明しました

Swift基本講座

このコースでは、iOSやOS X用のアプリをとても簡単に開発することができるプログラミング言語Swiftについて解説します。if文やfor文などの制御命令の使い方から変数や定数、配列や辞書の使い方まで基本的なSwiftプログラミングの知識をPlayground上で説明します。Swiftプログラミングの知識を効率的に学ぶのに、このコースをぜひお役立てください。

2時間59分 (35 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2015年09月23日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。