Курс языка программирования Raku / Продвинутый уровень / Подробнее о встроенных типах / Перечисления

Значения и ключи

Каждая константа перечисления несет в себе и имя, и число. Метод .value возвращает число, а метод .key возвращает имя в виде строки:

enum Colour <red green blue>;

say green.value; # 1
say green.key;   # green

Вам не обязательно принимать автоматическую нумерацию от нуля. Запишите константы в виде пар, чтобы выбрать значения самостоятельно:

enum Day (Mon => 1, Tue => 2, Wed => 3, Thu => 4, Fri => 5);

say Tue.value; # 2
say Fri.value; # 5

Здесь рабочая неделя нумеруется с единицы, а не с нуля.

Сам тип перечисления может перечислить все свои константы. Метод .enums возвращает отображение из каждого имени в его значение:

enum Colour <red green blue>;

say Colour.enums;       # Map.new((blue => 2, green => 1, red => 0))
say Colour.enums.elems; # 3

С помощью .value, .key и .enums вы можете свободно переходить от константы к ее числу, от числа обратно к данным и перебирать весь набор — именно это делает перечисления полезными для таких вещей, как меню, состояния и таблицы соответствий.

Практика

Пройдите 1 тест по содержанию этой темы.

Навигация по курсу

Тест — Перечисления   |   Тест — Значения перечислений


💪 Или перейдите сразу к упражнениям этого раздела.