配列を変換する便利な方法はありますか
[a,b,c]
ハッシュツリー構造に変換しますが、次のように1つのブランチのみを使用します。
{node: {a: {node: {b: {node: :c}}}}}
配列を変換する便利な方法はありますか
[a,b,c]
ハッシュツリー構造に変換しますが、次のように1つのブランチのみを使用します。
{node: {a: {node: {b: {node: :c}}}}}
reduce
結果を取得するために使用できます。
l = [:a, :b, :c]
t = l.reverse.reduce{|h,v|{v=>{node:h}}} # {: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と関係があることに気づきませんでした。とにかく、このハッシュを必要な構造に変換するのは難しいことではありません。