こんにちは😀
今回は、Enumクラスをみてみます。
Enumクラスとは
列挙型とも呼ばれます。
指定したリストの中に値(列挙子と呼びます)を定義し、別のクラスや関数から呼び出すことができます。
Enumクラスの書き方
書いてみましょう。
以下は、ガジェット名を指定したEnumクラスです。
これらの列挙子は文字列ではなく、このEnumクラスの名が「Gadget」なのでGadget型として認識されます。
普通はこの列挙子はアルファベットの大文字で定義しますが、以下のように日本語での定義もできます。
enum class Gadget{
SPEAKER,スマートウォッチ,EARPHONES
}
Enumクラスの呼び方
getGadgetクラスを作成し、Enumクラスの列挙子に文字列を指定しています。
「Gadget.SPEAKER」でEnumクラスとその列挙子が呼び出されます。
「when」は条件分岐なので、「Gadget.SPEAKERの場合は〜」とそれぞれ処理が行われます。
「->」はラムダ式なので、「Gadget.SPEAKERの場合は」->「”スマートスピーカー”と返す」となります。
fun getGadget(ga:Gadget):String{
return when(ga){
Gadget.SPEAKER -> “スマートスピーカー”
Gadget.スマートウォッチ -> “スマートウォッチ”
Gadget.EARPHONES -> “ワイヤレスイヤフォン”
}
}
mainクラスです。
getGadgetクラスを定義し、呼び出したいEnumクラス.列挙子を引数にセットします。
fun main(args: Array<String>) {
println(“今月は、${getGadget(Gadget.EARPHONES)}を買いました。”)
println(“来月は、${getGadget(Gadget.スマートウォッチ)}を買います。”)
}
実行してみると以下のように出力されます。
for文を使ってEnumクラスを呼ぶ
Enumクラスの呼び出しは上記の他にも、for文を使う方法もあります。
getGadgetクラスはそのままに、main関数の定義を変えましょう。
3行目の「enumValues<Gadget>」は、Gadget型の各列挙子をリストにセットして返します。
fun main(args: Array<String>) {
for (ga in enumValues<Gadget>()){
println(getGadget(ga)+”が欲しい。”)
}
}
実行すると、Gadgetクラスの全列挙子に文字列がセットされて出力されているのがわかります。
最後に一言・・・
Enumクラスは、使用する値を列挙子として指定することで可読性を上げることができます。
ミスの少ないわかりやすいコーディングを心がける上でも知っておきたいクラスです。
今回はここまで🤚
では、また次回。