Задача 7-3: Статический метод showcase

[А] Анатолий Шалобасов, 21 июля 2016, 19:51 , 2 подписчика

Здравствуйте, не могу понять каким образом реализуется метод, откуда если мы задаем массив 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

Обсуждение (1)


Michael Butlitsky Учитель

[M]

each_with_index — метод, который есть у массива, в этот метод можно передать блок кода. Все, что стоит между | это параметры блока.

Они аналогичны параметрам метода, только значения в них прописывает сам массив, когда выполняет этот код.

Мы не объясняем это подробно, поскольку используем этот функционал в основном для прохода по массивам. В данном случае на это можно смотреть как на аналог цикла for item in items

Вместо product, index можно было написать peremennaya1, peremennaya2 и потом использовать эти имена в цикле. Какой смысл у этих переменных и сколько их — определяет автор метода, в который передаем блок (здесь each_with_index) и описывает в документации.

В материалах к уроку Ассоциативные массивы (хэши) есть ссылки про блоки в руби, стоит почитать.