enumは、日本語で「
列挙型」と呼ばれるものです。これは、複数の値から1つを撰ぶような場合に用いられます。
この
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メソッドを使って「
パー」というテキストとして取り出すことができます。