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

Метод enum в Dart

В теле enum можно объявлять функции, общие для всех констант. Они вызываются у конкретной константы через точку:

enum Direction { north, east, south, west; Direction opposite() { switch (this) { case Direction.north: return Direction.south; case Direction.south: return Direction.north; case Direction.east: return Direction.west; case Direction.west: return Direction.east; } } } print(Direction.north.opposite());

Если поведение у констант разное, внутри метода удобно разобрать this через switch - так же, как для переменной типа enum:

enum Operation { add, sub, mul; int apply(int a, int b) { switch (this) { case Operation.add: return a + b; case Operation.sub: return a - b; case Operation.mul: return a * b; } } } print(Operation.mul.apply(6, 7));

Точка с запятой после последней константы отделяет список значений от объявлений методов и полей в теле enum. Без нее компилятор воспримет следующую строку как еще одну константу:

enum Priority { low(1), high(3); const Priority(this.level); final int level; bool isUrgent() { return level >= 3; } } print(Priority.high.isUrgent());

Объявите enum FileKind с константами text, image, archive. Добавьте метод label(): для text верните "text file", для image - "image file", для archive - "archive". Выведите результат для FileKind.image.

Объявите enum Sign с константами plus и minus и методом apply(int value). Для plus прибавьте 1, для minus вычтите 1. Выведите результат Sign.plus.apply(10).

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