[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Enumerable#to_a can run forever

Yukihiro Matsumoto

12/25/2007 2:19:00 AM

Hi,

In message "Re: Enumerable#to_a can run forever"
on Tue, 25 Dec 2007 08:47:48 +0900, Benjamin Kudria <ben@kudria.net> writes:

|require 'mathn'
|Prime.new.to_a # <- runs forever, never returns
|
|This seems a bit broken to me, and I was writing a program where I
|needed the first n primes, or all the primes under 200, for example, so
|I re-wrote Enumerable#to_a like so to make my code more idiomatic:

|This allows, for example, the following:
|Prime.new.to_a(10) # => [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] , the first
|10 primes
|Prime.new.to_a {|prime| prime < 20} # => [2, 3, 5, 7, 11, 13, 17, 19] ,
|all the primes under 20

Hmm, in 1.9, you have Enumerable#take to work like your to_i(num), and
Enumerable#take_while like your to_i{...}.

p Prime.new.take(10) # => [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
p Prime.new.take_while{|prime| prime < 20} # => [2, 3, 5, 7, 11, 13, 17, 19]

matz.

1 Answer

Benjamin Kudria

12/25/2007 2:27:00 AM

0

Yukihiro Matsumoto wrote:
> Hmm, in 1.9, you have Enumerable#take to work like your to_i(num), and
> Enumerable#take_while like your to_i{...}.
>
> p Prime.new.take(10) # => [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
> p Prime.new.take_while{|prime| prime < 20} # => [2, 3, 5, 7, 11, 13,
> 17, 19]
>
> matz.

Aaah, ok. Those would be excellent. I look forward to 1.9! Thank you!
However, what about Prime.new.to_a ? That would still run forever, and
the unsuspecting coder might be caught by surprise.
--
Posted via http://www.ruby-....