From: "shugo (Shugo Maeda)" Date: 2012-04-02T10:41:54+09:00 Subject: [ruby-core:44051] [ruby-trunk - Feature #6240] Enumerable#drop with negative argument Issue #6240 has been updated by shugo (Shugo Maeda). marcandre (Marc-Andre Lafortune) wrote: > > How Enumerable#drop can know the total number of elements? > > The source of elements might be IO. Besides that, the total number of elements might be infinite. > > `drop` would have to consume the whole iteration, indeed, which is why I was talking about a buffer. The buffer holds elements until we know they are not in the last (-n) elements. Here's a Ruby implementation: Ah, I see. It's interesting. Do you have any use case in mind? ---------------------------------------- Feature #6240: Enumerable#drop with negative argument https://bugs.ruby-lang.org/issues/6240#change-25581 Author: marcandre (Marc-Andre Lafortune) Status: Open Priority: Normal Assignee: Category: core Target version: 2.0.0 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? -- http://bugs.ruby-lang.org/