我是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对象中?谢谢你的建议。
答案 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编程。