在Ruby中,我想要做这样的事情,红宝石使用数组tvalues索引嵌套哈希散列
我有一个这样构建的哈希散列。
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
。
如何完成这项工作?
我的尝试中有任何错误? irb(main):2552:0> h => {“a”=> {“b”=> {“c”=>“basd”}},1 => {2 => {3 =>“three (主):2553:0> a = [1,2,3] => [1,2,3] irb(main):2554:0> a.inject(h, (irb):2554:in inject' from(irb):2554 irb(main):2555:0> a.inject(h, :fetch) ArgumentError:错误的参数数量(2为1) from(irb):2555:在'inject' from(irb):2555 – user2562153
@ user2562153我从Ruby 1.9.3开始。所以如果是这种情况,请使用* megar *解决方案。 –
在早期版本的Ruby中,比如你的注入需要一个块,所以你必须使用的表单是'keys.inject(hash){| h,k | h [k]}' –