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を削除しました (およびatに追加しました)計算の終わり)。各シンボルの「do」と「end」の間のすべてをループすることを望んでいました。それはうまくいきませんでした。[0]File.readend

次に、最初のブロックの後にこれを追加してみました:

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

2 回反復する必要はありません。

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