Issue #6166 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to matz (Yukihiro Matsumoto)

Hello,

If this kind of operations occur frequently, I think it is worth
to add a method.  But I'm not sure because Lazy just entered trunk.


My current opinion.  I like this style:

  e.lazy.pinch(1, 2) == e.lazy.drop(1).first(2)

because it is:

  - more explicit than pinch
  - more efficient than to_a[1, 2] (when e is very long)

-- 
Yusuke Endoh <mame / tsg.ne.jp>
----------------------------------------
Feature #6166: Enumerator::Lazy#pinch
https://bugs.ruby-lang.org/issues/6166#change-25405

Author: trans (Thomas Sawyer)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: 


In previous issue #6158 it has been determined that Enumerator::Lazy#take should be lazy. But an eager form of #take would still be useful.

To this end I'll suggest `Enumerator::Lazy#pinch`. Examples of usage:

    e.lazy.pinch 1

    e.lazy.pinch 1..2

    e.lazy.pinch 1,2

It is basically equivalent to calling `to_a[index]`, but has the advantage of being a single invocation instead of two, and reads better.

The #pinch method would be strictly a Lazy method and have no counterpart in Enumerable.



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