Должен ли я предпочесть закрытый класс или Перечисление в Scala? - PullRequest
12 голосов
/ 21 ноября 2010

Я пытаюсь реализовать ставку Plurk API для Scala, но у меня есть выбор дизайна.

Например, гендерный атрибут пользователя Plurk может быть одним из «мужской», «женский», «другой».

sealed trait Gender
object Male extends Gender
object Female extends Gender
object Others extends Gender

Вопрос в том, должен ли я предпочесть запечатанный класс / объект, как в приведенном выше примере кода, по сравнению с перечислением для представления типов перечисления?

Потому что я нахожу, что я редко сталкиваюсь с Enumeration, когда использую другую библиотеку Scala, и многие учебники по Actor используют запечатанный класс / объект для представления сообщений для Actor.

Значит ли это, что в Scala закрытый класс является лучшим / обычным выбором по сравнению с Enumeration?

Ответы [ 2 ]

11 голосов
/ 21 ноября 2010

Если вам не нужно перебирать объекты Gender или вам нужны такие методы, как next и previous, классы и объекты - правильное решение.

Если вам нужны функции "классы и объекты "и" scala.Enumeration " этот и этот вопрос может представлять интерес для вас.

9 голосов
/ 21 ноября 2010

Использование Enumeration также немного дешевле с точки зрения количества классов.В примере Gender это не имеет значения, но может начать иметь значение, если вы хотите смоделировать инструкции процессора путем перечисления с более чем 100 элементами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...