回答編集履歴
1
takeもLazyだった
test
CHANGED
@@ -12,8 +12,16 @@
|
|
12
12
|
|
13
13
|
* `lazy.select{ |n| n.odd? }`→自身の`.next`が呼ばれるたびに、奇数が得られるまで`lazy.next`を呼び出して、その奇数を返す`Enumerator::Lazy`
|
14
14
|
|
15
|
-
* `lazy.take(3)`…`lazy.next`を3回呼び出して、その結果を
|
15
|
+
* `lazy.take(3)`…`lazy.next`を3回呼び出して、その結果を返す`Enumerator::Lazy`
|
16
|
+
|
17
|
+
ということで、`take`まで呼んだ時点でも**まだ結果は得られません**。`.to_a`などで結果を取得する必要があります。
|
16
18
|
|
17
19
|
|
18
20
|
|
21
|
+
```ruby
|
22
|
+
|
19
|
-
|
23
|
+
irb(main):001:0> (0..Float::INFINITY).lazy.map{ |n| n.succ }.select{ |n| n.odd? }.take(3)
|
24
|
+
|
25
|
+
=> #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator::Lazy: #<Enumerator::Lazy: 0..Infinity>:map>:select>:take(3)>
|
26
|
+
|
27
|
+
```
|