0

我需要使用数组当前迭代的名称来创建字典的名称。

例如:

sites = ["google", "facebook", "twitter", "stackoverflow"]

sites.each do |site|

  #{site}_success_hash = {}  <-- I need the correct syntax for achieving this result.

   ... populate ... hash

end

所以我想要 4 个名为 的哈希值google_success_hash,等等。

我无法弄清楚这一点,这让我发疯。

4

2 回答 2

1

您是否考虑过仅嵌套哈希而不是将它们保存在单独的变量中?

像这样的东西:

success_hash = {}
sites.each do |site|
  success_hash[site] = #populate hash
end

但是,您要求的事情可以这样完成(假设可以使用实例变量):

instance_variable_set("@#{variable_name}", :something)(在这里 查看答案)

于 2013-02-09T23:27:22.110 回答
0

首先为您的网站使用符号而不是字符串:

sites = [:google, :facebook, :twitter, :stackoverflow]

然后我认为这可能有效:

sites.each do |site|
  instance_variable_set("@#{site}_success_hash", {})
  # populate @site_success_hash
end

请注意,您在这里设置了一个实例变量。

于 2013-02-09T23:25:12.297 回答