在 Ruby 中模拟枚举的最佳方式? (第二部分)

发布于 2024-08-15 23:16:34 字数 447 浏览 1 评论 0原文

我是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伪心 2024-08-22 23:16:34

符号不会对全局(或任何其他)范围执行任何操作(即,当您使用符号时,不会定义任何变量或常量或其他任何内容),所以我想答案是:只需使用符号,全局范围将保持清晰。

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

class Element
  def self.type_integer
    :type_integer
  end
end

虽然我没有看到与仅使用 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:

class Element
  def self.type_integer
    :type_integer
  end
end

Although I fail to see the upside vs. just using e.type = :type_integer directly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文