使用变量名称的一部分创建字典名称

时间:2013-02-09 23:15:00

标签: ruby

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

例如:

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的哈希等

我无法理解这一点,这让我感到疯狂。

2 个答案:

答案 0 :(得分:1)

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

这样的事情:

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

你要求的东西可以像这样完成(假设可以使用实例变量):

instance_variable_set("@#{variable_name}", :something) (见答案here

答案 1 :(得分:0)

首先使用符号代替网站的字符串:

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

然后我认为这可行:

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

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