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

标签 ruby arrays methods

这是我正在使用的代码:

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/

相关文章:

java - 为什么我的数组搜索在搜索循环超过 2000 次后花费了 0 纳秒?

c - 数组和函数

ruby-on-rails - 在我的 Rails 应用程序中嵌入 resque-web 前端

ruby - 在哈希的键数组中追加元素

ruby - 为什么 # 会出现未定义的方法 `xpath'?

C:结构中的二维字符指针

java - Netty IO发送消息给客户端

Java:从 ArrayList 引用数组作为方法输入

java - 在此示例中如何返回 Point

ruby - Logstash使用grok和ruby提取和定制字段