初心者用kotlin

kotlinのメモです。

1202 views

ENUM

列挙型クラス。仕事では主にエラーコードの定義に使用する。
以下は基本形。enumクラスを作成してメンバ変数にアクセスすると、以下の結果が得られる。

enum class ErrorCode() {
    NORMAL,
    NETWORK_ERROR,
    IO_ERROR

}
fun main(args:Array<String>){
    println(ErrorCode.NORMAL)
    println(ErrorCode.NORMAL.ordinal)

    println(ErrorCode.NETWORK_ERROR)
    println(ErrorCode.NETWORK_ERROR.ordinal)

    println(ErrorCode.IO_ERROR)
    println(ErrorCode.IO_ERROR.ordinal)
}
NORMAL
0
NETWORK_ERROR
1
IO_ERROR
2

ErrorCode.NORMALと書くと、文字列が返却され、ErrorCode.NORMAL.oridinalと書くと宣言された順番が得られる。
さらに、値を持たせたいときは、次のように記述する。

enum class ErrorCode(val value:Int) {
    NORMAL(100),
    NETWORK_ERROR(200),
    IO_ERROR(300)

}
fun main(args:Array<String>){
    println(ErrorCode.NORMAL)
    println(ErrorCode.NORMAL.ordinal)
    println(ErrorCode.NORMAL.value)


    println(ErrorCode.NETWORK_ERROR)
    println(ErrorCode.NETWORK_ERROR.ordinal)
    println(ErrorCode.NETWORK_ERROR.value)

    println(ErrorCode.IO_ERROR)
    println(ErrorCode.IO_ERROR.ordinal)
    println(ErrorCode.IO_ERROR.value)
}
NORMAL
0
100
NETWORK_ERROR
1
200
IO_ERROR
2
300

ここで注意したいのは、enum class ErrorCode(val value:Int) の引数にあるvalueと呼び出し時のvalue。
println(ErrorCode.NORMAL.value)のように、valueをつけるが、これはenum class ErrorCode(val value:Int)のvalueと同じ名前である。
つまり、enum class ErrorCode(val value:Int)をenum class ErrorCode(val v:Int)に変えた場合は呼び出し元もprintln(ErrorCode.NORMAL.v)と書く必要がある。

enum class ErrorCode(val v:Int) {
    NORMAL(100),
    NETWORK_ERROR(200),
    IO_ERROR(300)

}
fun main(args:Array<String>){
    println(ErrorCode.NORMAL)
    println(ErrorCode.NORMAL.ordinal)
    println(ErrorCode.NORMAL.v)


    println(ErrorCode.NETWORK_ERROR)
    println(ErrorCode.NETWORK_ERROR.ordinal)
    println(ErrorCode.NETWORK_ERROR.v)

    println(ErrorCode.IO_ERROR)
    println(ErrorCode.IO_ERROR.ordinal)
    println(ErrorCode.IO_ERROR.v)
}
NORMAL
0
100
NETWORK_ERROR
1
200
IO_ERROR
2
300

Page 8 of 36.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

マッスル

自己紹介

本サイトの作成者。
趣味:プログラム/水耕栽培/仮想通貨/激辛好き
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/

ツイッター

@darkimpact0626