尝试为 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#constants和 Module#const_get .
关于Ruby 模块/枚举检索奇数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23422325/