Во многих языках программирования можно встретить, так называемые, перечисления или enum, которые представляют из себя набор именованых констант. Например, в языке C# их можно объявить следующим образом:
1 2 3 |
|
В ruby нет встроенного типа enum, но есть несколько приемов как такое можно реализовать из того, что есть под рукой :-)
Вариант 1 - Быстрый и понятный
Все что нам нужно - модуль и константы. Код будет следующим:
1 2 3 4 5 6 7 |
|
Я думаю, что здесь особо ничего не нужно комментировать.
Вариант 2
Вот такой интересный вариант я нагуглил:
1 2 3 |
|
Но данный подход, как по мне, имеет несколько недостатков:
- Теряется namespace, для этого нужно код выше поместить еще в модуль
- Необходимо вручную прописывать значения для каждого элемента перечисления
- Не очень удобно (но иногда все таки необходимо) использовать числа в качестве значений
Вариант 3
Необходимо будет написать дополнительно пару строк кода и… вуаля!
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Такой вариант очень удобен и читабелен, особенно если вы хотите
устанавливать определенные значения для какой-либо записи в БД. Ведь
сразу понятнее такая информация event.day_of_week # => 'MON'
, чем
event.day_of_week # => 1
.
Заключение
На самом деле можно нагуглить очень много вариантов реализации и вы можете выбрать именно тот, который вам по душе и лучше всего подходит к решению конкретной задачи.
P.S. Вот, на мой взгляд, одна из самых лучших реализаций ruby enum