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

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

Задачи опираются на приёмы раздела: константы enum, поля в конструкторе enum, подтипы sealed с data class и object, исчерпывающий when без else.

Объявите enum class Weekday с семью днями недели. Напишите функцию isWeekend(day: Weekday): для SATURDAY и SUNDAY верните true, для остальных дней - false. Выведите результат для Weekday.SATURDAY.

Объявите enum class OrderStatus с константами NEW, PAID, SHIPPED и DONE. Дана переменная:

val status = OrderStatus.PAID

С помощью when для переменной status выведите соответствующую текстовую метку: NEW - "created", PAID - "paid", SHIPPED - "on way", DONE - "finished".

Объявите enum class Traffic с полем limit: Int: CITY - 60, ROAD - 90, HIGHWAY - 110. Выведите все пары "name:limit" в порядке объявления, каждую с новой строки.

Объявите sealed class ApiResult: Success с полем payload: String, Failure с полем error: Int. Напишите функцию summary(r: ApiResult): String: для Success верните строку "ok " и payload, для Failure - строку "err " и error. Выведите результат для ApiResult.Failure(503).

Объявите sealed class Screen: Loading как object, Content с полем title: String, Error с полем message: String. Дано:

val screen: Screen = Screen.Content("Home")

С помощью when для переменной screen выведите заголовок экрана или текст ошибки, для Loading выведите "wait".

Объявите enum class Channel с константами EMAIL, SMS и PUSH. Объявите sealed class Notification: Sent с полями channel: Channel и id: Long, Skipped как object. Создайте Notification.Sent(Channel.PUSH, 7) и выведите имя канала и id в одной строке, между ними один пробел.

Объявите sealed interface Expr: Num с полем value: Int, Add с полями left и right типа Expr. Напишите функцию eval(e: Expr): Int: для Num верните value, для Add - сумму значений eval(left) и eval(right). Выведите результат для выражения Expr.Add(Expr.Num(2), Expr.Num(5)).

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