Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpOpPrEs 119 of 123 menu
◀ ▶

Практика на enum и sealed в Kotlin

Сделайте enum class Level с константами LOW, MID и HIGH. Дана переменная:

val lv = Level.MID

Выведите имя константы строчными буквами.

Сделайте enum class Color с полем hex: String: RED - "f00", GREEN - "0f0", BLUE - "00f". Выведите hex для Color.GREEN.

Сделайте enum class Op с константами PLUS и MINUS. Напишите функцию calc(a: Int, b: Int, op: Op): Int. Выведите результат для 7, 3 и Op.MINUS.

Дан sealed class:

sealed class Result { data class Ok(val value: Int) : Result() data class Err(val code: Int) : Result() }

Напишите функцию describe(r: Result): String: для Ok - строка "v=" и значение, для Err - "e=" и код. Выведите описание для Result.Err(404).

Сделайте sealed class State с вариантами object Idle и data class Work(val step: Int). Дана переменная:

val st: State = State.Work(2)

Выведите "idle", "work" и номер шага или "?" для неизвестного варианта.

Сделайте enum class Size с константами S, M и L. Дан список:

val sizes = listOf(Size.S, Size.L, Size.M, Size.S)

Выведите число элементов Size.S.

Сделайте sealed interface Expr с вариантами data class Num(val v: Int) и data class Mul(val a: Expr, val b: Expr). Напишите функцию eval(e: Expr): Int. Выведите результат для Mul(Num(3), Num(4)).

Сделайте enum class Dir с константами N, E, S и W. Сделайте sealed class Move с вариантами Step с полями dir: Dir и len: Int и Stop как object. Дано движение Move.Step(Dir.E, 5). Выведите имя направления и len, разделив пробелом.

Дан enum:

enum class Role { USER, ADMIN } fun canDelete(role: Role): Boolean { return role == Role.ADMIN }

Выведите canDelete(Role.USER) и canDelete(Role.ADMIN).

Сделайте sealed class Pay с вариантами Card с полем last4: String и Cash как object. Дан список:

val ways: List<Pay> = listOf( Pay.Cash, Pay.Card("1234"), Pay.Card("9999"), )

Выведите число вариантов Card в списке.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить