switch по enum в Dart
Конструкция switch по значению enum
перебирает известные компилятору константы. Если перечислены
все члены enum, выражение считается исчерпывающим и
default можно опустить:
enum Day {
monday,
tuesday,
wednesday,
thursday,
friday,
saturday,
sunday
}
String label(Day day) {
switch (day) {
case Day.monday:
return "start";
case Day.tuesday:
return "mid";
case Day.wednesday:
return "mid";
case Day.thursday:
return "mid";
case Day.friday:
return "end";
case Day.saturday:
return "rest";
case Day.sunday:
return "rest";
}
}
print(label(Day.friday));
Тот же switch может записывать результат в переменную.
Для enum с полным набором веток тип результата выводится
без default:
enum PortKind { http, https, ftp }
var kind = PortKind.https;
var scheme = switch (kind) {
PortKind.http => "http",
PortKind.https => "https",
PortKind.ftp => "ftp",
};
print(scheme);
Несколько констант можно обработать отдельными ветками
case, если для них нужен один и тот же результат:
enum Day {
monday,
tuesday,
wednesday,
thursday,
friday,
saturday,
sunday
}
bool isWeekend(Day day) {
switch (day) {
case Day.saturday:
case Day.sunday:
return true;
case Day.monday:
case Day.tuesday:
case Day.wednesday:
case Day.thursday:
case Day.friday:
return false;
}
}
print(isWeekend(Day.sunday));
Объявите enum Season с константами
spring, summer, autumn
и winter.
Напишите функцию isWarm(Season season):
для summer и spring верните
true, для остальных - false.
Вызовите с Season.winter и выведите результат.
Объявите enum Role с константами
guest, user и admin.
Дано:
var role = Role.user;
С помощью switch для переменной role
запишите в code число: guest -
0, user - 1,
admin - 2.
Выведите code.