以下是我正在使用的代码:
class Trader
def initialize(ticker ="GLD")
@ticker = ticker
end
def yahoo_data(days=12)
require 'yahoofinance'
YahooFinance::get_historical_quotes_days( @ticker, days ) do |row|
puts "#{row.join(',')}" # this is where a solution is required
end
end
end
yahoo_data方法从Yahoo Finance获取数据并将价格历史记录放在控制台上。但是,如何使用前面的代码填充一个稍后可以作为对象进行操作的数组,而不是简单的put放入以太网中。
有些事情:
do |row| populate_an_array_method(row.join(',') end
答案 0 :(得分:4)
如果你没有给get_historical_quotes_days
一个区块,你将得到一个阵列。然后,您可以使用map
获取join
的结果数组。
一般来说,因为ruby 1.8.7大多数迭代器方法在没有块的情况下调用时会返回一个枚举。因此,如果foo.bar {|x| puts x}
将打印值1,2,3,则enum = foo.bar
将返回包含值1,2,3的枚举。如果你arr = foo.bar.to_a
,你将获得数组[1,2,3]
。
如果有一个迭代器方法,它不执行此操作(可能来自某个库,但不符合此约定),则可以使用foo.enum_for(:bar)
获取包含{{{{}所产生的所有值的枚举。 1}}。
假设,如果bar
尚未返回数组,则可以使用get_historical_quotes_days
来获取所需内容。