2013-06-19 29 views
5

Với băm như vậy với băm lồng nhau trong Ruby (sâu có thể thay đổi):Sâu xóa từ Ruby băm bằng con đường rải rác

hash = {"status_message"=> 
     { "destination_does_not_exist"=> 
      {"message_header" => "Zielordner existiert nicht", 
      "message_body"  => "Der Zielordner für das Backup existiert nicht mehr.", 
      "corrective_action" => "Erstellen Sie den Zielordner." 
      } 
     } 
     } 

Làm thế nào tôi có thể xóa key và tất cả các con của nó giá trị sử dụng đơn giản "chấm" ký hiệu? Cái gì như:

path = "status_message.destination_does_not_exist.message_header" 
hash.delete!(path) 
+0

có thể trùng lặp của http://stackoverflow.com/questions/6423484/how-do-i-convert-hash-keys-to-method-names –

Trả lời

5
path = path.split '.' 
leaf = path.pop 

path.inject(hash) {|h, el| h[el]}.delete leaf 
+0

Good catch, nhờ . Tôi chỉ học ruby, vì vậy không nhận ra điều này như một cái cây đơn giản. –

+0

BTW, đã giải quyết được vấn đề của tôi, cảm ơn! –

+0

Yossi, có thể có một số thông tin xung quanh hoạt động với cây bằng Ruby không? Làm thế nào để đại diện cho họ bằng cách sử dụng băm và như vậy/ –

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