我需要使用数组当前迭代的名称来创建字典的名称。
例如:
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
的哈希等
我无法理解这一点,这让我感到疯狂。
答案 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
请注意,您在此处设置了一个实例变量。