0
我想创建枚举类似java模拟。我有这个模块。动态对象创建和const_set
module Enum
def self.included(base)
super
base.extend(Enum)
base.private_class_method :new
end
def enum(key, fields = {}, &class_body)
value = Class.new(self) do
fields.each_with_index do |item, i|
define_singleton_method(item.first.to_s.downcase) { item.last }
define_singleton_method("order") { i }
end
end
self.const_set key, value
end
end
和
class TestEnum
include Enum
enum :TEST, value: 1
end
当我试图
>> TestEnum::TEST.is_a? TestEnum
false <-
我这有。为什么?我期望看到'真实'。 但
>> TestEnum::TEST.ancestors
TestEnum::TEST.ancestors
[TestEnum::TEST, TestEnum, Enum, Object
我在做什么错了?
你的用例是什么?如果仅仅是定义一个枚举,你可以使用带符号的Set。 – Confusion 2012-02-05 20:39:16