我看到了這個問題的幾個變種,但沒有真正找到一個堅實的答案。所以我有一個URLS數組。我想遍歷該數組,併爲每個單獨的URL,我將創建一個WebPages類的實例。如何通過一個循環並用每次迭代Ruby創建一個新對象?
因此,如果數組URL有5個URL,那麼我會創建WebPages的5個對象。我試圖使用eval()來做到這一點,但很快就瞭解到由eval創建的實例具有非常本地的作用域,並且之後我無法使用這些WebPage對象。
string_to_eval = @urls.map{|x| "webpage#{urls.index(x)} = WebPage.new('# {x}')"}.join(';')
puts string_to_eval
eval(string_to_eval)
String_to_eval打印出:
webpage0 = WebPage.new('http://www.google.com');
webpage1 = WebPage.new('http://www.yahoo.com');
webpage2 = WebPage.new('http://www.amazon.com');
webpage3 = WebPage.new('http://www.ebay.com')
我還能怎麼做與Ruby中循環的每次迭代的對象?有沒有解決的辦法?