Использование каждого объекта for с массивом объектов

У меня есть объект @cars = Cars, который имеет массив car_array объектов Car, которые имеют переменные экземпляра @id и @mileage, поэтому, записывая его как псевдомассив, это:

Cars = [
    Car1 = [1, 12000],
    Car2 = [2, 33000]
]

Есть ли способ написать метод each для перебора автомобилей таким образом:

@cars.each do |id, mileage|
    ...
end

?

Я пытался сделать собственный метод each в Cars:

def each(&block)
    @car_array.each(&block)
end

но это вернет в перечислитель только каждый объект Car. Как мне преобразовать каждый объект Car в массив?


person Mateusz Bartkowski    schedule 01.10.2017    source источник


Ответы (1)


В ruby ​​мы используем цепные методы для выполнения различных сложных преобразований:

@cars.map do |car|
  [car.id, car.mileage]
end.each do |id, mileage|
    ...
end
person Aleksei Matiushkin    schedule 01.10.2017