2011-02-23 40 views
19

Tôi đã điều sau đây:của Ruby chuyển đổi mảng lồng nhau băm

value = 42 
array = ["this","is","a","test"] 

làm thế nào tôi có thể chuyển đổi đó để có được

{ "this" => { "is" => { "a" => { "test" => 42 } } } } 

mảng này luôn luôn bằng phẳng.

Cảm ơn bạn!

+1

Bây giờ đó là một cấu trúc dữ liệu điên ... sẽ cho nó xảy ra để có bất cứ biện minh? – delnan

+2

@delnan "hi.i.am.some.kind.of.path = value" được hợp nhất trong một khối băm yaml hiện có. – Mauricio

Trả lời

71

Hãy thử điều này:

h = array.reverse.inject(value) { |a, n| { n => a } } 
+3

Chà, điều đó thực sự trơn tru. –

+0

tuyệt vời ... thực sự tuyệt vời. – Mauricio

+0

Phần khó nhất trong số này là tìm ra cách để cụm từ câu hỏi của tôi trên SO. "Nested" là bước ngoặt;) –

Các vấn đề liên quan