Я хочу создать класс "Config", который действует где-то между хешем и деревом. Это просто для хранения глобальных значений, которые могут иметь контекст.
Вот как я это использую:
Config.get("root.parent.child_b") #=> "value"
Вот как может выглядеть класс:
class Construct
def get(path)
# split path by "."
# search tree for nodes
end
def set(key, value)
# split path by "."
# create tree node if necessary
# set tree value
end
def tree
{
:root => {
:parent => {
:child_a => "value",
:child_b => "another value"
},
:another_parent => {
:something => {
:nesting => "goes on and on"
}
}
}
}
end
end
Есть ли название для такого рода вещей где-то между Hash и Tree (не по специальности «Информатика»)? В основном хеш-подобный интерфейс к дереву.
Что-то, что выводит как это:
t = TreeHash.new
t.set("root.parent.child_a", "value")
t.set("root.parent.child_b", "another value")
желаемый формат вывода:
t.get("root.parent.child_a") #=> "value"
t.get("root") #=> {"parent" => {"child_a" => "value", "child_b" => "another value"}}
вместо этого:
t.get("root") #=> nil
или это (из которого вы получаете значение, вызывая {}.value
)
t.get("root") #=> {"parent" => {"child_a" => {}, "child_b" => {}}}