i saw several variations of question did not find solid answer.
so have array of urls. want loop through array , each individual url, create instance of class webpages.
so if array urls has 5 urls in it, create 5 objects of webpages. tried use eval() learned instances made eval have local scope , cannot use webpage objects after.
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 prints out:
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') how else can make object each iteration of loop in ruby? there way around this?
why not this?
webpages = @urls.map { |url| webpage.new(url) } it bad idea have webpage0, webpage1... when can have webpages[0], webpages[1]... (also, array way not require evil of eval.)