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

Ruby 使用变量名的一部分创建字典名,ruby,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 sites=[“谷歌”、“facebook

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

例如:

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

sites.each do |site|

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

   ... populate ... hash

end
sites=[“谷歌”、“facebook”、“推特”、“stackoverflow”]
站点。每个do |站点|

#{site}\u success\u hash={}首先,为您的站点使用符号而不是字符串:

sites = [:google, :facebook, :twitter, :stackoverflow]
那么我想这可能有用:

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

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

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

大概是这样的:

success_hash = {}
sites.each do |site|
  success_hash[site] = #populate hash
end
但是,您要求的事情可以这样完成(假设可以使用实例变量):

instance_variable_set(“@#{variable_name},:something)

(参见答案)

你应该将你的字典存储在一个超级字典中,而不是制作几个全球级别的字典。同意;这只是一个散列散列到目前为止,我没有考虑嵌套我的散列。多亏了你和前两个给我这个主意的人。我让它工作:)