書名: Functional Kotlin作者名: Mario Arias Rivu Chakraborty本章字?jǐn)?shù): 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"
}
}
推薦閱讀
- 三維圖形化C++趣味編程
- 基于Java技術(shù)的Web應(yīng)用開發(fā)
- 差分進(jìn)化算法及其高維多目標(biāo)優(yōu)化應(yīng)用
- 軟件工程
- Visual Basic程序設(shè)計
- TMS320LF240x芯片原理、設(shè)計及應(yīng)用
- ASP.NET程序開發(fā)范例寶典
- 詳解MATLAB圖形繪制技術(shù)
- ASP.NET求職寶典
- OpenCV Android開發(fā)實(shí)戰(zhàn)
- Visual C++開發(fā)寶典
- H5+移動營銷設(shè)計寶典
- Keil Cx51 V7.0單片機(jī)高級語言編程與μVision2應(yīng)用實(shí)踐
- Java EE項(xiàng)目應(yīng)用開發(fā)
- 深入淺出 HTTPS:從原理到實(shí)戰(zhàn)