Classes, Enums, Extensions
Enums and Exhaustive Switch
An enum lists fixed values. A switch expression over the enum is checked for exhaustiveness.
Program
Play the program to label a priority with an exhaustive switch.
enums.dart
Replay: real traced execution (multi-file project)
enum Priority { low, medium, high }
void main() {
var p = Priority.high;
var label = switch (p) {
Priority.high => 'urgent',
Priority.medium => 'normal',
Priority.low => 'whenever',
};
print(label);
}
p ← Priority.high
3void main() {4 var p = Priority.high;5 var label = switch (p) {values this stepPriority.highpmatched arm ← Priority.high
4var p = Priority.high;5var label = switch (p) {6 Priority.high => 'urgent',values this stepPriority.highmatched armPriority.highplabel ← urgent
5var label = switch (p) {6 Priority.high => 'urgent',7 Priority.medium => 'normal',values this stepurgentlabelprint(label);
9 };10 print(label);11}outputurgentvalues this stepurgentlabel
enum
`enum Priority { ... }` defines fixed named values.
Priority.high
Each value is accessed as `EnumName.value`.
exhaustive
Listing every variant lets the compiler skip a `default` arm.