2009-12-24 110 views
0

我是新来的Ruby所以请原谅我,如果这是明显的东西..在Ruby中模拟枚举的最佳方式? (第二部分)

我做了一个类,像这样

class Element 
    attr_accessor :type 
    :type_integer 
    :type_string 
end 

(这真的只是一个例子,不实际的代码)

嗯,我读了Enums in Ruby,我宁愿去像其他语言枚举类似的路线。但是,我有一个问题,在执行此操作时如何保持全局范围清晰。我想要能够做的是类似于

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

或类似的东西非常简单和直接。

+0

为什么要关闭这个问题? – Earlz 2009-12-24 21:30:03

回答

2

符号不会对全局(或任何其他)范围做任何事情(即当您使用符号时没有变量或常量或其他任何东西被定义),所以我想答案是:只要使用符号和全局范围将保持清晰。

如果你想使用e.type=Element.type_integer,同时仍然使用的符号,你可以这样做:

class Element 
    def self.type_integer 
    :type_integer 
    end 
end 

虽然我看不到上升空间与只使用e.type = :type_integer直接。

+0

+1 sepp2k是男人 – horseyguy 2009-12-25 00:20:05