Здравствуйте, не могу понять каким образом реализуется метод, откуда если мы задаем массив products берется product?И почему его все равно как то считывают?И так понимаю index это зарезервированное слово и его можно использовать? И получается each_with_index, только с которым и можно использовать index?
def self.showcase(products)
puts "Что хотите купить?\n\n"
products.each_with_index do |product, index|
puts "#{index}: #{product.show}"
end
each_with_index
— метод, который есть у массива, в этот метод можно передать блок кода. Все, что стоит между |
это параметры блока.
Они аналогичны параметрам метода, только значения в них прописывает сам массив, когда выполняет этот код.
Мы не объясняем это подробно, поскольку используем этот функционал в основном для прохода по массивам. В данном случае на это можно смотреть как на аналог цикла for item in items
Вместо product, index
можно было написать peremennaya1, peremennaya2
и потом использовать эти имена в цикле. Какой смысл у этих переменных и сколько их — определяет автор метода, в который передаем блок (здесь each_with_index
) и описывает в документации.
В материалах к уроку Ассоциативные массивы (хэши) есть ссылки про блоки в руби, стоит почитать.