Ruby 单分支散列树

Ruby 单分支散列树,ruby,activesupport,Ruby,Activesupport,是否有一些转换数组的方便方法 [a,b,c] 要对树结构进行散列,但仅使用一个分支,如下所示: {node: {a: {node: {b: {node: :c}}}}} 这样做可以: a=[:a,:b,:c] l=lambda{|ar| if ar.empty? then {} else ar.length==1 ? {:node=>ar[0]} : {:node=> {ar.shift => (l.call ar)}}

是否有一些转换数组的方便方法

[a,b,c]
要对树结构进行散列,但仅使用一个分支,如下所示:

{node: {a: {node: {b: {node: :c}}}}}

这样做可以:

 a=[:a,:b,:c]
 l=lambda{|ar| if ar.empty? then 
        {}
    else 
        ar.length==1 ? {:node=>ar[0]} : {:node=> {ar.shift => (l.call ar)}}
    end
  }
 puts l.call a
不知道有没有更简单的方法


UPD:哎呀,我没注意到它与ActiveSupport有关。无论如何,将此哈希转换为所需的结构应该不难。

您可以使用
reduce
获得结果:

l = [:a, :b, :c]
t = l.reverse.reduce{|h,v|{v=>{node:h}}}  # {:a=>{:node=>{:b=>{:node=>:c}}}}