Лучший способ эмулировать enum в Ruby? (часть вторая) - PullRequest
0 голосов
/ 25 декабря 2009

Я новичок в Ruby, так что прости меня, если это что-то очевидное ..

Я сделал такой класс

class Element
  attr_accessor :type
  :type_integer
  :type_string
end

(это действительно просто пример, а не реальный код)

Ну, я прочитал Перечисления в Ruby , и я бы предпочел пойти по пути Символов, имея что-то вроде перечисления на других языках. У меня есть проблема, однако, как я могу сохранить свою глобальную область видимости при реализации этого. То, что я хочу сделать, это что-то вроде

e=Element.new
e.type=Element.type_integer

или что-то довольно простое и понятное.

1 Ответ

2 голосов
/ 25 декабря 2009

Символы ничего не делают с глобальной (или любой другой) областью действия (т. Е. Никакие переменные или константы или что-либо еще не определяются при использовании символов), поэтому я предполагаю, что ответ таков: просто используйте символы, и глобальная область будет быть чистым.

Если вы хотите использовать e.type=Element.type_integer, все еще используя символы, вы можете сделать:

class Element
  def self.type_integer
    :type_integer
  end
end

Хотя я не вижу преимущества и просто использую e.type = :type_integer напрямую.

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