kotlinのメモです。
1202 views
列挙型クラス。仕事では主にエラーコードの定義に使用する。
以下は基本形。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/