我想在YAML文件中创建动态键名和值,这样可以节省一些空间。
例如:
KID(\d+)_AGE: &kid(params)_age
kid(params): "18"
所以预期的结果应该是:
KID1_AGE: &kid1_age
kid1: "18"
因此,每当我放入KID1_AGE,KID2_AGE时,密钥都是动态的,他们会选择相同的哈希值。
有关如何获得此项的任何建议?这主要用于Ruby。
谢谢。
答案 0 :(得分:1)
如果您正在使用Rails,则首先使用ERb解析该文件
# foo.yaml
my_random: <%= Random.rand(1..100) %>
所以你可以做类似
的事情<% 100.times do |n| %>
<%= "KID#{n}_AGE: &kid#{n}_age" %>
<% end %>
但这感觉漂亮的代码很臭。你应该解释你的整体目标,而不是你想如何实现它。
答案 1 :(得分:1)
您不能使用看起来像正则表达式模式的字符串作为键,并期望它像正则表达式一样。 YAML和Ruby不会那样工作。您也不能使用正则表达式模式作为哈希的键,然后在哈希处抛出一个字符串并使键自动匹配并返回关联的值。哈希和Ruby不会这样工作。
您可以创建与模式匹配的键,然后让Ruby遍历YAML返回的哈希,查找匹配的键,但这不会为您节省任何空间,具体取决于您所说的目标。< / p>
使用YAML尽可能完全使用aliases and anchors的能力。它们可以使YAML文件更小,同时在解析文件后仍然可以访问所需的值。