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