0

我有一个股票代码的文本文件,每个符号都在自己的行上。在 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)

但这也没有用。

任何帮助表示赞赏。非常感谢

4

2 回答 2

1

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

symbols.each do |symbol|
  json = File.read("#{symbol}.json")
  # do some calculation for symbol
end
于 2012-11-12T17:24:51.793 回答
0

无需迭代两次:

open('symbols.txt').lines.each do |line|
  symbol = line.strip
  json = File.read("#{symbol}.json")
  # process json
end
于 2012-11-12T20:14:08.363 回答