...stores objects in a tree structure, creating nodes automatically when needed.Wenn man jetzt meint, dass das eine Menge Code wäre..., weit gefehlt! (Wie war das? The best code is no code at all, und das zweitbeste so wenig Code wie möglich?):
class Node < Hash
attr_accessor :value
def method_missing(key)
self[key]==nil ? self[key]=Node.new : self[key]
end
end
tree = Node.new
tree.branch.leaf.value = 'Hello World!'
tree.branch1.leaf.value = 'Hallo Hallo!'
tree # => {:branch=>{:leaf=>{}}, :branch1=>{:leaf=>{}}}
tree.branch.leaf.value # => "Hello World!"
tree.branch1.leaf.value # => "Hallo Hallo!"
Irgendwie magisch! Node erbt von Hash. Wird ein Node (tree = Node.new) mit einer unbekannten Methode aufgerufen (tree.branch), wird diese einfach in dem Node, d.h. dem Hash, es ist so einfach, dass ich es gar nicht gescheit ausdrücken kann....letztendlich entstehen mit dem method_missing - Trick in sich geschachtelte Hashes. Echt erstaunlich!