いくつかの定数ハッシュを持つクラスを作成しました。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 番目の質問の動作ができるかどうかはわかりません...
質問 2 クラスに多くの openstructs があります。毎回次のようなものを追加せずに、それらをクラス メソッドとして動的に定義するにはどうすればよいですか。
def self.myhash
MYHASH
end