Issue #6240 has been updated by marcandre (Marc-Andre Lafortune).

Status changed from Feedback to Closed

knu (Akinori MUSHA) wrote:
> Using an existing feature, `[1,2,3,4,5].lazy.drop(-n)` could be written as `[1,2,3,4,5].each_cons(n+1).lazy.map(&:first)`.
> Enumerable#each_cons does not use a circular buffer, though. (It currently uses push & shift)

That is clever.
I'll close this request, since it's not clear how frequent this could be needed and there's already an easy way of doing it (even though it might not be obvious).

----------------------------------------
Feature #6240: Enumerable#drop with negative argument
https://bugs.ruby-lang.org/issues/6240#change-76228

* Author: marcandre (Marc-Andre Lafortune)
* Status: Closed
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version: 
----------------------------------------
Currently, Enumerable#drop works only for non-negative arguments.

It could be extended so that negative arguments means dropping from the end:

    [:hello, :world].drop(-1) # => [:hello]

This could especially be interesting for `Lazy#drop`, which would keep a circular buffer of elements before yielding them.

    (1..6).lazy.drop(-3).each{|x| puts x} # -> prints 1, 2 and 3

Thoughts?



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>