对Ruby中的数组中的每个值执行相同的操作

时间:2012-11-12 17:13:54

标签: ruby

我有一个股票符号的文本文件,每个符号都在它自己的行上。在Ruby中,我从文本文件中创建了一个数组,如下所示:

symbols = []
File.read('symbols.txt').each_line do |line|
  symbols << line.chop!
end

对于数组中的每个符号,我想从一个json文件(例如MSFT.json)中读取并执行一些计算(所有这些都在运行),然后为下一个符号执行相同的操作数组。

当尝试“调用”并对数组中的第一项执行计算时,我这样做了:

json = File.read("#{symbols[0]}.json")
#...calculations come after this

这个工作正常,它确实贯穿了第一个符号的整个程序,但当然不会继续执行其余符号的相同步骤(我知道那是因为我在数组中指定了一个索引]

现在我知道该程序适用于单个符号,我现在希望它在数组中的所有符号上运行...所以在第一个块后,我尝试添加:symbols.each do,并删除来自[0]行的File.read(并在计算结束时添加end)。我希望它会遍历每个符号的“do”和“end”之间的所有内容。那没用。

然后我尝试在第一个块之后添加它:

def page(symbols, i)
  page[i]
end

File.read行更改为:json = File.read("#{page[i]}.json)

但这也不起作用。

感谢任何帮助。非常感谢

2 个答案:

答案 0 :(得分:1)

您可以简单地使用.each而不是迭代器索引:

symbols.each do |symbol|
  json = File.read("#{symbol}.json")
  # do some calculation for symbol
end

答案 1 :(得分:0)

无需迭代两次:

open('symbols.txt').lines.each do |line|
  symbol = line.strip
  json = File.read("#{symbol}.json")
  # process json
end