2013-02-09 69 views
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

我不知道這一點,它的駕駛我瘋了。

+2

您應該將您的字典存儲在超級字典中,而不是製作多個全球級別的字典。 – 2013-02-09 23:18:49

+0

同意;它到目前爲止只是哈希散列。 – 2013-02-09 23:23:47

回答

1

你是否認爲只是嵌套哈希,而不是將它們保持在單獨的變量?

事情是這樣的:

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

你要的不過可以這樣來完成的事情(假設它是確定使用實例變量):

instance_variable_set("@#{variable_name}", :something) (看便知here

+0

我沒有考慮嵌套我的哈希。感謝你和第一個給我這個想法的人。我得到它的工作:) – user2057812 2013-02-09 23:31:27

+0

很高興聽到你得到它的工作! – 2013-02-09 23:34:23

0

首先使用的符號,而不是爲你的網站的字符串:

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

那麼我想這可能工作:

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

注意,你在這裏設置一個實例變量。