将CSV值加载到Ruby类

时间:2011-02-16 20:45:37

标签: ruby class csv

我是Ruby的新手,从昨晚开始学习使用它。作为我为自己设置的第一个任务,我想将CSV文件加载到我创建的Car对象数组中。

class Car
  attr_accessor :year, :make, :model, :length

  def initializer(year, make, model, length)
    @year = year
    @make = make
    @model = model
    @length = length
  end

  def to_s
    "Year: #{@year} | Make: #{@make} | Model: #{@model} | Length: #{@length}"
  end
end

require 'csv'

data = CSV.read('/home/stapiagutierrez/Desktop/Pickaxe/cars.csv')
puts data[1]

如何遍历数据集合并将每行值加载到新的Car对象中?谢谢你的建议。

1 个答案:

答案 0 :(得分:3)

假设每辆车都在自己的行上:

path = '/home/stapiagutierrez/Desktop/Pickaxe/cars.csv'
cars = CSV.read(path).collect{ |row| Car.new *row }

*中的*row"splat" operator,它告诉Ruby取一个数组并将其转换为单独的参数。它可以做相反的事情并将多个参数转换为数组;请参阅Variable-Length Argument Lists上的Ruby编程。