Рубин 2.0 будет поставляться Lazy enumerables (фантастическая новость!), Потому что теперь мы можем разогреть двигатели с использованием драгоценных камней, как enumerable-lazy:
require 'enumerable/lazy'
xs.lazy.drop(1).each { |x| puts x }
Это не плохо, но концептуально это точно не применяется к вашему делу, так как у вас уже есть массив, а не ленивый объект (связанный список), который вы должны пройти, чтобы отбросить элементы (хорошо, мы просто отбрасываем один элемент здесь, это не будет разблокировать сделку). Таким образом, вы можете просто абстрагировать свое решение (которое использует диапазон) как Enumerable#each_from(start_index)
, если вы планируете использовать его много.
Подробнее: Вы можете также создать расширение для перечислим-ленивогоArray#lazy_slice(range)
, который будет возвращать Enumerable#lazy
объект. Это также выглядит довольно неплохо: xs.lazy_slice(1..-1).each { |x| puts x }
'ставит х, если i.zero?' Heh :) – fl00r
@ fl00r да :) Есть множество способов сравнения. – kiddorails