在 Ruby 中模拟枚举的最佳方式? (第二部分)
我是 Ruby 新手,所以请原谅我,如果这是显而易见的事情..
我已经创建了一个像这样的类
class Element
attr_accessor :type
:type_integer
:type_string
end
(这实际上只是一个示例,而不是实际的代码)
好吧,我已经阅读了 Ruby 中的枚举,我更喜欢走符号路线,在其他语言中使用类似于枚举的东西。但我有一个问题,在实施这个过程时如何保持我的全球范围清晰。我想要做的是类似的事情,
e=Element.new
e.type=Element.type_integer
或者类似的事情,非常简单直接。
I'm new to Ruby so forgive me if this is something obvious..
I've made a class like so
class Element
attr_accessor :type
:type_integer
:type_string
end
(this is really just an example, not actual code)
Well, I've read Enums in Ruby and I'd prefer to go the Symbols route of having something like enumerations in other languages. I have a problem though, how can I keep my global scope clear while implementing this. What I'm wanting to be able to do is something like
e=Element.new
e.type=Element.type_integer
or something pretty simple and straight forward like that.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
符号不会对全局(或任何其他)范围执行任何操作(即,当您使用符号时,不会定义任何变量或常量或其他任何内容),所以我想答案是:只需使用符号,全局范围将保持清晰。
如果您想使用
e.type=Element.type_integer
,同时仍然使用符号,您可以这样做:虽然我没有看到与仅使用
e.type = :type_integer< 相比的好处/code> 直接。
Symbols don't do anything to the global (or any other) scope (i.e. no variables or constants or anything else gets defined when you use symbols), so I guess the answer is: just use symbols and the global scope will be kept clear.
If you want to use
e.type=Element.type_integer
, while still using symbols, you could do:Although I fail to see the upside vs. just using
e.type = :type_integer
directly.