gpt4 book ai didi

ruby - 如何在 Ruby 中填充数组?

转载 作者:数据小太阳 更新时间:2023-10-29 07:57:47 25 4
gpt4 key购买 nike

这是我正在使用的代码:

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 获取数据并将价格历史记录放在控制台上。但是,您将如何使用前面的代码来填充一个稍后可以作为对象进行操作的数组,而不是一个简单的 puts 蒸发到以太中。

类似的东西:

do |row| populate_an_array_method(row.join(',') end                                                                                                              

最佳答案

如果您不给 get_historical_quotes_days 一个 block ,您将得到一个数组。然后,您可以对其使用 map 以获得 join 结果的数组。

一般来说,自 ruby​​ 1.8.7 以来,大多数迭代器方法在调用时都会返回一个可枚举的对象,而无需 block 。所以如果 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) 来获取可枚举的其中包含 bar 产生的所有值。

假设,如果 get_historical_quotes_days 尚未返回数组,您可以使用 YahooFinance.enum_for(:get_historical_quotes_days).map {|row| row.join(",") } 得到你想要的。

关于ruby - 如何在 Ruby 中填充数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4590063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com