Ruby 模块/枚举检索奇数值

标签 ruby

尝试为 ruby​​ 构建一个枚举,以便我可以检索相应枚举值的int值。

我的模块如下所示:

module DataType
  STRING  = 1,
  NUMBER  = 2,
  BOOLEAN = 3,
  OBJECT  = 4,
  DATA    = 5,
  FILE    = 6,
  DATE    = 7,
  ARRAY   = 8
end

如果我用字符串以外的任何值调用它,

DataType::Number

返回

 2... 3, 4, 5, 6, 7, 8, 

但是如果我打电话

DataType::String

返回

[1, 2, 3, 4, 5, 6, 7, 8]

DataType::String 如何以及为何返回所有 enum 值的数组?

最佳答案

用逗号声明常量:

module DataType
  STRING  = 1,
  NUMBER  = 2,
  ...........
end

DataType::Number 模块中的第二个位置并从第二个位置返回值,您需要这个:

module DataType
  STRING  = 1
  NUMBER  = 2
  BOOLEAN = 3
  ..........
end

现在DataType::Number返回2。并返回全部:

=> DataType.constants.map { |x| Hash[x, DataType.const_get(x)] }
=> [{:STRING=>1}, {:NUMBER=>2}, {:BOOLEAN=>3}, {:OBJECT=>4}, {:DATA=>5}, {:FILE=>6}, {:DATE=>7}, {:ARRAY=>8}]

寻求帮助Module#constantsModule#const_get .

关于Ruby 模块/枚举检索奇数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23422325/

相关文章:

python - 从 Ruby/Python 调用 C++ 类函数

ruby - 什么是 Ruby 中的单例类?

ruby-on-rails - 从 JavaScript js.erb 文件调用 Ruby on Rails 辅助方法

ruby-on-rails - 您如何通过 heroku 控制台访问 "app"(引用 session )?

ruby-on-rails - Rails validates_format_of with Regex 在换行的情况下失败

ruby-on-rails - 当您执行 activeRecord.save 时,事务会提交还是方法退出时?

Ruby 排序和消除重复项

ruby - 类和 case 语句——为什么它的计算结果不符合预期?

ruby-on-rails - 在不删除默认值 `*` 的情况下扩展 SELECT

Ruby:有没有 "knows"英文不规则动词的词干分析器?