官术网_书友最值得收藏!

  • Functional Kotlin
  • Mario Arias Rivu Chakraborty
  • 257字
  • 2021-06-24 19:15:25

Enum

Enum in Kotlin is a way to define a set of constant values. Enums are very useful, but not limited, as configuration values:

enum class Flour {
WHEAT, CORN, CASSAVA
}

Each element is an object that extends the Flour class.

Like any object, they can extend interfaces:

interface Exotic {
fun isExotic(): Boolean
}

enum class Flour : Exotic {
WHEAT {
override fun isExotic(): Boolean {
return false
}
},

CORN {
override fun isExotic(): Boolean {
return false
}
},

CASSAVA {
override fun isExotic(): Boolean {
return true
}
}
}

Enum can also have abstract methods:

enum class Flour: Exotic {
WHEAT {
override fun isGlutenFree(): Boolean {
return false
}

override fun isExotic(): Boolean {
return false
}
},

CORN {
override fun isGlutenFree(): Boolean {
return true
}

override fun isExotic(): Boolean {
return false
}
},

CASSAVA {
override fun isGlutenFree(): Boolean {
return true
}

override fun isExotic(): Boolean {
return true
}
};

abstract fun isGlutenFree(): Boolean
}

Any method definition must be declared after the (;) separating the last element.

When enums are used with when expressions, Kotlin's compiler checks that all cases are covered (individually or with an else):

fun flourDescription(flour: Flour): String {
return when(flour) { // error
Flour.CASSAVA -> "A very exotic flavour"
}
}

In this case, we're only checking for CASSAVA and not the other elements; therefore, it fails:

fun flourDescription(flour: Flour): String {
return when(flour) {
Flour.CASSAVA -> "A very exotic flavour"
else -> "Boring"
}
}
主站蜘蛛池模板: 汪清县| 东方市| 唐山市| 凤山市| 工布江达县| 华池县| 长治县| 宜宾市| 报价| 福州市| 盐边县| 饶阳县| 连城县| 济阳县| 兖州市| 富宁县| 镶黄旗| 来安县| 泗水县| 郎溪县| 罗源县| 涟源市| 马关县| 南靖县| 遂昌县| 依安县| 河西区| 张掖市| 麻栗坡县| 东莞市| 嘉荫县| 汉沽区| 揭东县| 吉林市| 新平| 华容县| 五原县| 武邑县| 澄迈县| 调兵山市| 临桂县|