Практика на enum и sealed в Dart
Задачи на перечисления и закрытые иерархии с проверкой вариантов в коде.
Сделайте enum Level
с константами low, mid
и high. Дана переменная:
var lv = Level.mid;
Выведите имя константы строчными буквами.
Сделайте enum Color
с полем hex:
red - "f00", green - "0f0",
blue - "00f".
Выведите hex для Color.green.
Сделайте enum Op
с константами plus и minus.
Напишите функцию calc(int a, int b, Op op).
Выведите результат для 7, 3
и Op.minus.
Дан следующий код:
sealed class Result {}
class Ok extends Result {
Ok(this.value);
int value;
}
class Err extends Result {
Err(this.code);
int code;
}
Напишите функцию describe(Result r):
для Ok - строка "v=" и значение,
для Err - "e=" и код.
Выведите описание для Err(404).
Сделайте sealed class State
с вариантами Idle
и Work с полем step.
Дана переменная:
State st = Work(2);
Через switch выведите "idle",
"work" и номер шага
или "?" для неизвестного варианта.
Сделайте enum Size
с константами s, m и l.
Дан список:
var sizes = [Size.s, Size.l, Size.m, Size.s];
Выведите число элементов Size.s.
Сделайте sealed class Expr
с вариантами Num с полем v
и Mul с полями a и b.
Напишите функцию eval(Expr e).
Выведите результат для Mul(Num(3), Num(4)).
Сделайте enum Dir
с константами n, e, s
и w.
Сделайте sealed class Move
с вариантами Step с полями dir
и len и Stop.
Дано движение Step(Dir.e, 5).
Выведите имя направления и len,
разделив пробелом.
Дан следующий код:
enum Role { employee, admin }
bool canDelete(Role role) {
return role == Role.admin;
}
Выведите canDelete(Role.employee)
и canDelete(Role.admin).
Сделайте sealed class Pay
с вариантами Card с полем last4
и Cash.
Дан список:
var ways = [
Cash(),
Card("1234"),
Card("9999"),
];
Выведите число вариантов Card в списке.