我创建了一个类,我有一些恒定的哈希值。我想输入Myclass.myhash.hashkey
并显示哈希值。现在我已经创建了一个类似的行为,method_missing
但我必须初始化对象,所以我称之为它Myclass.new.myhash.hashkey
并且它可以工作。到目前为止,这是我的代码:
class Myclass
def initialize
@attributes = []
end
def method_missing(name, *args)
@attributes << name
if @attributes.length == 2
eval("#{@attributes.first.upcase}[:#{@attributes.last.downcase}]")
else
self
end
end
MYHASH = {
id: 1,
description: "A nice hash",
hashkey: "hash key"
}
end
我怎么能在没有初始化的情况下做到这一点,new
所以它不会MyClass
每次都创建一个对象?
更新: 第一个问题由 toro2k 解释,但我不知道是否使用它我可以有我的第二个问题的行为......
问题 2 我的类中有很多 openstruct,如何动态地将它们定义为类方法,而无需每次都添加如下内容:
def self.myhash
MYHASH
end