Свойства констант enum в Kotlin
У enum class может быть первичный конструктор
с параметрами - как у обычного класса. Значения параметров
задают отдельно для каждой константы в круглых скобках
после её имени:
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
fun main() {
println(Color.RED.rgb)
}
Свойства, объявленные в конструкторе enum, доступны у
любой константы как у обычного объекта. Порядок констант
в теле enum совпадает с порядком в entries и
с полем ordinal:
enum class Size(val maxItems: Int) {
SMALL(10),
MEDIUM(50),
LARGE(200)
}
fun main() {
println(Size.MEDIUM.maxItems)
println(Size.LARGE.ordinal)
}
Параметры конструктора можно комбинировать с обычными полями в теле enum, если одной константе нужна дополнительная логика инициализации:
enum class Currency(val code: String, val sign: String) {
USD("USD", "$"),
EUR("EUR", "€"),
RUB("RUB", "₽")
}
fun main() {
val c = Currency.EUR
println("${c.sign} ${c.code}")
}
Объявите enum class HttpStatus с полем
code: Int: OK - 200,
NOT_FOUND - 404, SERVER_ERROR -
500.
Выведите код для HttpStatus.NOT_FOUND.
Объявите enum class Discount с полем
percent: Int: NONE - 0,
SALE - 10, MEGA - 30.
Дана переменная:
val d = Discount.SALE
Выведите значение percent.