Загрузка значений CSV в класс Ruby - PullRequest
0 голосов
/ 16 февраля 2011

Я новичок в 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 Ответ

3 голосов
/ 16 февраля 2011

Предполагая, что каждый вагон находится в отдельной строке:

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

* в *row - это оператор "splat" , который говорит Ruby взять массивпревратить это в отдельные аргументы.Он может делать обратное и превращать несколько аргументов в массив;см. Программирование Ruby для Списков аргументов переменной длины .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...