我的目标是创建一个用哈希初始化的对象,然后查询该对象以从该哈希中获取值。为了让事情更清楚,这里有一个粗略的例子来说明我的意思:
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
但是,如果我打算大量使用这种方法,那么当我只想访问一个哈希值时,这将大大降低我的性能。
对此有何建议?