1

有没有一些方便的方法来转换数组

[a,b,c]

散列树结构,但只有一个分支,如下所示:

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

2 回答 2

2

您可以使用reduce来获得结果:

l = [:a, :b, :c]
t = l.reverse.reduce{|h,v|{v=>{node:h}}}  # {:a=>{:node=>{:b=>{:node=>:c}}}}
于 2012-06-08T09:43:10.827 回答
1

这样的事情会做:

 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 有关。无论如何,将此哈希转换为您需要的结构应该不难。

于 2012-06-08T09:38:49.733 回答