2

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

例如:

KID(\d+)_AGE: &kid(params)_age
  孩子(参数):“18”

所以预期的结果应该是:

KID1_AGE: &kid1_age
  孩子1:“18”

因此,每当我输入 KID1_AGE、KID2_AGE 时,密钥都是动态的,它们将获取相同的哈希值。

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

谢谢你。

4

2 回答 2

3

如果您使用的是 Rails,则首先使用 ERb 解析文件

# foo.yaml

my_random: <%= Random.rand(1..100) %>

所以你可以做类似的事情

<% 100.times do |n| %>
<%= "KID#{n}_AGE: &kid#{n}_age" %>
<% end %>

不过,这感觉代码很臭。您可能应该解释您的总体目标,而不是您希望如何实现它。

于 2013-02-15T15:54:32.140 回答
2

您不能使用看起来像正则表达式模式的字符串作为键,并期望它像正则表达式一样工作。YAML 和 Ruby 不能那样工作。您也不能使用正则表达式模式作为散列的键,然后在散列中抛出一个字符串,让键自动匹配并返回关联的值。哈希和 Ruby 不是这样工作的。

您可以创建与模式匹配的键,然后让 Ruby 遍历 YAML 返回的哈希,寻找匹配的键,但这不会为您节省任何空间,具体取决于您所说的目标。

尽可能充分地使用 YAML 使用别名和锚点的能力。它们可以使 YAML 文件更小,同时在文件被解析后仍然可以访问您需要的值。

于 2013-02-15T18:08:46.600 回答