Есть ли причина, по которой мы не можем перебрать «обратный диапазон» в ruby? - PullRequest
95 голосов
/ 15 января 2010

Я пытался выполнить итерацию в обратном направлении, используя Range и each:

(4..0).each do |i|
  puts i
end
==> 4..0

Итерация по 0..4 записывает числа. На другом диапазоне r = 4..0 вроде бы нормально, r.first == 4, r.last == 0.

Мне кажется странным, что приведенная выше конструкция не дает ожидаемого результата. В чем причина этого? В каких ситуациях такое поведение разумно?

Ответы [ 11 ]

0 голосов
/ 22 мая 2016

Это сработало для моего ленивого варианта использования

(-999999..0).lazy.map{|x| -x}.first(3)
#=> [999999, 999998, 999997]
...