2

Rubyでこんなことをしたいのですが、

このように構築されたハッシュのハッシュがあります。

h = {1 => {2 => {3 => "three"}},'a' => { 'b' => { 'c' => "basd"}}}
=> {"a"=>{"b"=>{"c"=>"basd"}}, 1=>{2=>{3=>"three"}}}

このような値を持つ配列があるとします。

a = [1, 2, 3]

たとえば、配列値を使用してハッシュ内のネストされたキーにインデックスを付け、最後のキーが指す値を返すメソッドが必要です (前の配列/キーによって導かれるように)。

getHashValue([1,2,3]) should return "three" => h[1][2][3]

if a = ['a','b', 'c']戻り値は になりますbasd

これを行うにはどうすればよいですか?

4

4 に答える 4

2

単純な再帰

def getValue(hash, keys, i = 0)
  if i + 1 < keys.length
    getValue(hash[keys[i]], keys, i + 1)
  else
    hash[keys[i]]
  end
end

getValue(h, [1,2,3]) => "three"
getValue(h, ['a','b','c']) => "basd"
于 2013-07-08T20:19:56.407 に答える