私が目指しているのは、ハッシュで初期化されるオブジェクトを作成し、そのハッシュから値を取得するためにこのオブジェクトをクエリすることです。物事をより明確にするために、ここに私が意味することの大まかな例があります:
class HashHolder
def initialize(hash)
@hash = hash
end
def get_value(*args)
# What are my possibilities here?
end
end
holder = HashHolder.new({:a => { :b => { :c => "value" } } } )
holder.get_value(:a, :b, :c) # should return "value"
次のように、引数リストで反復を実行できることを知っています。
def get_value(*args)
value = @hash
args.each do |k|
value = value[k]
end
return value
end
しかし、この方法を頻繁に使用することを計画している場合、ハッシュ値にアクセスするだけでパフォーマンスが大幅に低下します。
それについて何か提案はありますか?