Project

General

Profile

Actions

Bug #6428

closed

lazy版take/dropに2度forceを呼んだ時の挙動

Added by nagachika (Tomoyuki Chikanaga) over 9 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 2.0.0dev (2012-05-12 trunk 35629) [x86_64-darwin10.8.0]
Backport:
[ruby-dev:45634]

Description

Enumerator::Lazy#take が返す Enumerator::Lazy に繰り返し force/to_a メソッドを呼ぶと、
2度目以降は全ての要素を返しています。

$ cat lazy_take_recycle.rb
lazy_take = (1..5).lazy.take(3)

p lazy_take.force
p lazy_take.force

$ ruby lazy_take_recycle.rb
[1, 2, 3]
[1, 2, 3, 4, 5]

同じ Enumerator::Lazy に force を複数回呼ぶのがよい使いかたではないのかもしれませんが、
なんとなく何度呼んでも先頭の要素を返してくれるのが嬉しいのではないかと思います。
2度目以降も同じ個数になるようにするパッチを添付します。
ただし実用的なユースケースがあるわけではありません。


Files

lazy_take_recycle.patch (1.2 KB) lazy_take_recycle.patch nagachika (Tomoyuki Chikanaga), 05/13/2012 01:52 AM

Related issues

Related to Ruby master - Bug #7691: 3 bugs with Lazy enumerators with stateClosed01/14/2013Actions
Actions

Also available in: Atom PDF