構造体、列挙型、タプル (2/3)
作成:2014-10-11 11:09
更新:2014-10-11 11:09
更新:2014-10-11 11:09
■enum(列挙型)について
enumは、日本語で「列挙型」と呼ばれるものです。これは、複数の値から1つを撰ぶような場合に用いられます。
このenumは、「enum」というキーワードを使って定義します。以下のような形です。
enumの後に名前を指定します。そして{}内に、caseを使って、用意しておく値を記述します。あるいは、caseの後に複数の値をまとめて書くことも可能です。どちらも働きは同じです。
こうして作成されたenumは、「名前.値」という具合にして値を指定し利用することができます。
注意したいのは、「enumの値は、数値やテキスト等の値として扱われたりしない」という点です。例えば、列挙型の値をprintlnで出力しても、値は表示されません。ただ、「enumの値だよ」というデバッグ上の表示が現れるだけです。enumは、あくまでenumで定義したタイプの値であり、テキストでも数字の値でもないのですから。
が、enumの値をテキストや数字として取り出したい、という場合もあるでしょう。こうした場合のために、enumは「デフォルト値」を指定することができます。
クラスの継承のような感じで、enumの名前の後にデフォルト値の型を指定します。そしてそれぞれの値の後にイコールでデフォルト値を代入します。こうして作成されたenumの値は、その中の「toRaw」というメソッドを呼び出すことでデフォルト値を取り出すことができるようになります。
では、実際の利用例を挙げておきましょう。下のリストでは、Jankenとジャンケンという2つのenumを定義し利用しています。ジャンケンでは各値にStringのデフォルト値を指定してあります。
Jankenの値は、Janken.Gooというようにして利用することができますが、これをprintlnで出力しても具体的な値は表示されません。が、ジャンケン.パーの値は、toRawメソッドを使って「パー」というテキストとして取り出すことができます。
このenumは、「enum」というキーワードを使って定義します。以下のような形です。
enum 名前 {
case 値1
case 値2
……略……
}
enumの後に名前を指定します。そして{}内に、caseを使って、用意しておく値を記述します。あるいは、caseの後に複数の値をまとめて書くことも可能です。どちらも働きは同じです。
enum 名前 {
case 値1, 値2, ……
}
こうして作成されたenumは、「名前.値」という具合にして値を指定し利用することができます。
注意したいのは、「enumの値は、数値やテキスト等の値として扱われたりしない」という点です。例えば、列挙型の値をprintlnで出力しても、値は表示されません。ただ、「enumの値だよ」というデバッグ上の表示が現れるだけです。enumは、あくまでenumで定義したタイプの値であり、テキストでも数字の値でもないのですから。
が、enumの値をテキストや数字として取り出したい、という場合もあるでしょう。こうした場合のために、enumは「デフォルト値」を指定することができます。
enum 名前 : 型 {
case 値1 = デフォルト値
case 値2 = デフォルト値
……
}
クラスの継承のような感じで、enumの名前の後にデフォルト値の型を指定します。そしてそれぞれの値の後にイコールでデフォルト値を代入します。こうして作成されたenumの値は、その中の「toRaw」というメソッドを呼び出すことでデフォルト値を取り出すことができるようになります。
では、実際の利用例を挙げておきましょう。下のリストでは、Jankenとジャンケンという2つのenumを定義し利用しています。ジャンケンでは各値にStringのデフォルト値を指定してあります。
Jankenの値は、Janken.Gooというようにして利用することができますが、これをprintlnで出力しても具体的な値は表示されません。が、ジャンケン.パーの値は、toRawメソッドを使って「パー」というテキストとして取り出すことができます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
enum Janken { case Goo case Choki case Paa } enum ジャンケン : String { case グー = "グー" case チョキ = "チョキ" case パー = "パー" } var me = Janken.Goo var you = ジャンケン.パー println(me) println(you.toRaw())
※関連コンテンツ