比方說,我們有以下YAML結構:有沒有一個內置的訪問嵌套yaml字符串?
books:
book_one: "Some name"
book_two: "Some other name"
如果我們像加載文件:
f = YAML.load_file("my.yml")
我們可以訪問book_one
,如:f["books"]["book_one"]
。是否有一個內置函數可以接受字符串:books.book_one
並返回相同的值?
編輯:這是我迄今爲止,它似乎工作:
...
@yfile = YAML.load_file("my.yml")
...
def strings_for(key)
key_components = key.split(".")
container = @yfile
key_components.each_with_index do |kc,idx|
if container && container.kind_of?(Hash) && container.keys.include?(kc)
container = container[kc]
else
container = nil
end
end
container
end
看一看[這](http://ruby-doc.org/stdlib-1.8.6/libdoc/yaml/rdoc/YAML/BaseNode.html)類和第三個例子[這裏]( http://yaml4r.sourceforge.net/doc/page/parsing_yaml_documents.htm)。 –
順便說一句,你可以用'inject' - [gist](https://gist.github.com/9b3955823fbca9185833)做得更好。這是我在其中一個項目中使用的。 –
酷一KL-7 :) – Geo