首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Ruby中实现枚举?

如何在Ruby中实现枚举?
EN

Stack Overflow用户
提问于 2008-09-16 19:02:09
回答 22查看 209.7K关注 0票数 348

在Ruby中实现枚举习惯用法的最佳方式是什么?我正在寻找一些我可以(几乎)使用的东西,比如Java/C#枚举。

EN

Stack Overflow用户

发布于 2012-02-28 21:38:05

我已经实现了这样的枚举。

代码语言:javascript
运行
复制
module EnumType

  def self.find_by_id id
    if id.instance_of? String
      id = id.to_i
    end 
    values.each do |type|
      if id == type.id
        return type
      end
    end
    nil
  end

  def self.values
    [@ENUM_1, @ENUM_2] 
  end

  class Enum
    attr_reader :id, :label

    def initialize id, label
      @id = id
      @label = label
    end
  end

  @ENUM_1 = Enum.new(1, "first")
  @ENUM_2 = Enum.new(2, "second")

end

然后它就很容易进行操作了

代码语言:javascript
运行
复制
EnumType.ENUM_1.label

..。

代码语言:javascript
运行
复制
enum = EnumType.find_by_id 1

..。

代码语言:javascript
运行
复制
valueArray = EnumType.values
票数 2
EN
查看全部 22 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/75759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档