0Pricing
Kotlin Academy · レッスン

Enumの値と序数

反復とインデックス参照を学びます

「Enumの値と序数」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

すべての定数の列挙

自動生成されるvalues()関数は、宣言順にすべての定数を含む配列を返します。

enum class Suit { HEARTS, CLUBS }

fun main() {
    for (s in Suit.values()) println(s)
}

values()の代わりにentries

現在のKotlinではentriesが推奨されています。entriesは不変リストを返し、呼び出しのたびに新しい配列を作成することを避けられます。

enum class Suit { HEARTS, CLUBS }

fun main() {
    for (s in Suit.entries) println(s)
}

ordinalプロパティ

すべての定数にはordinalがあり、宣言順におけるゼロ始まりの位置を表します。

enum class Size { S, M, L }

fun main() {
    println(Size.S.ordinal)
    println(Size.L.ordinal)
}

定数の個数を数える

entries.sizeを使用すると、定数の個数を数えられます。

enum class Day { MON, TUE, WED }

fun main() {
    println(Day.entries.size)
}

インデックスを使った反復

ordinalまたはインデックスを組み合わせて、各定数に番号を付けられます。

enum class Color { RED, GREEN, BLUE }

fun main() {
    for (c in Color.entries) {
        println("${c.ordinal}: $c")
    }
}

valueOfとnameのまとめ

valueOf()(文字列から定数)とname(定数から文字列)を組み合わせると、往復変換を行えます。

enum class Status { ON, OFF }

fun main() {
    val s = Status.valueOf("ON")
    println(s.name)
}

定数のマッピング

entriesはリストなので、mapなどのコレクション関数を使用できます。

enum class Coin(val cents: Int) { PENNY(1), DIME(10) }

fun main() {
    val names = Coin.entries.map { it.name }
    println(names)
}

プロパティによる検索

プロパティを条件にして、firstまたはfindで定数を検索できます。

enum class Coin(val cents: Int) { PENNY(1), DIME(10) }

fun main() {
    val c = Coin.entries.first { it.cents == 10 }
    println(c)
}

ordinalは壊れやすい

ordinalの値を長期間保存することは避けてください。定数の順序を変更するとordinalも変わり、保存済みのデータが壊れるためです。代わりにnameを保存してください。

enum class Level { LOW, HIGH }

fun main() {
    println(Level.HIGH.name)
}

ordinalによる次の定数

ordinalとentriesリストを使って、定数間を移動できます。

enum class Gear { FIRST, SECOND, THIRD }

fun next(g: Gear): Gear {
    val all = Gear.entries
    return all[(g.ordinal + 1) % all.size]
}

fun main() {
    println(next(Gear.FIRST))
}

総合演習

反復処理を行い、nameとordinalの両方を読み取ってenumを要約します。

enum class Planet { MERCURY, VENUS, EARTH }

fun main() {
    Planet.entries.forEach {
        println("${it.ordinal} -> ${it.name}")
    }
}

理解度チェック

enumの値とordinalについて理解できているか確認しましょう。

まとめ

定数を列挙してインデックスを付ける方法を学びました。

  • entries(推奨)とvalues()は、すべての定数を一覧表示します。
  • ordinalは、宣言順におけるゼロ始まりの位置です。
  • entriesはリストなので、コレクション関数を使用できます。
  • 永続性を保つため、ordinalよりもnameを保存することを優先してください。
enum class Size { S, M, L }

fun main() {
    println(Size.entries.size)
    println(Size.M.ordinal)
}

よくある質問

「Enumの値と序数」レッスンは無料ですか?

はい。「Enumの値と序数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「Enumの値と序数」で何を学びますか?

反復とインデックス参照を学びます ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Enumの値と序数」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Enumの定義
  2. Enumのプロパティとメソッド
  3. whenとEnum
  4. Enumの値と序数
← Kotlin Academyに戻る