如何在YAML文件中创建动态密钥名称

时间:2013-02-15 15:49:36

标签: ruby yaml

我想在YAML文件中创建动态键名和值,这样可以节省一些空间。

例如:

KID(\d+)_AGE: &kid(params)_age
  kid(params): "18"

所以预期的结果应该是:

KID1_AGE: &kid1_age
  kid1: "18"

因此,每当我放入KID1_AGE,KID2_AGE时,密钥都是动态的,他们会选择相同的哈希值。

有关如何获得此项的任何建议?这主要用于Ruby。

谢谢。

2 个答案:

答案 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文件更小,同时在解析文件后仍然可以访问所需的值。