Enumerable :: each_with_index теперь необязательно принимает аргументы в Ruby 1.9. Какое значение и / или какой вариант использования для этого? - PullRequest
3 голосов
/ 29 октября 2011

В Ruby 1.8.7 и более ранних версиях Enumerable::each_with_index не принимал никаких аргументов. В Ruby 1.9 он будет принимать произвольное количество аргументов. Документация / код показывает, что он просто передает эти аргументы в ::each. Я считаю, что при использовании встроенной и стандартной библиотеки Enumerables передача аргумента приведет к ошибке, поскольку метод Enumerable ::each не ожидает параметров.

Так что, я думаю, это полезно только при создании собственного Enumerable, в котором вы создаете метод ::each, который принимает аргументы. Какой пример, где это было бы полезно?

Существуют ли другие неочевидные последствия этого изменения?

1 Ответ

2 голосов
/ 29 октября 2011

Я просмотрел код некоторых драгоценных камней и почти не нашел использования этой функции.То, что он делает, spreadsheet:

def each skip=dimensions[0], &block
  skip.upto(dimensions[1] - 1) do |idx|
    block.call row(idx)
  end
end

Я не вижу в этом важного изменения: #each - базовый метод для классов, которые включают модуль Enumerable и добавленные методы (map, select, ...) не принимать аргументы.

...