From: toyofuku@... Date: 1997-09-19T19:37:03+09:00 Subject: [ruby-list:4455] Re: prime generator sample program 豊福@パパイヤです。 けいじゅさん > あとは, 以下のメソッドSieve#collectのようにリミットの指定ができるよう > にしたり, breakした時点での配列をとりあえず返すようにoverloadするぐら > いですね... > > class Sieve > def collect > ary = [] > begin > for prime in self > break if prime > @limit > ary.concat yield.prime > end > ensure > ary > end > end > end > # 実行はしていません. > ary.concat yield.prime で yield.prime も yield prime も yield, prime もダメだった ので ary.concat yield(prime) にしましたがこれでいいんで しょうか。 それから ensure return ary のように return をつけないと値が返ってこないようでしたが そういうもんでしょうか。 後、break 用には rescure も必要でした。 > >> 無限に生成するストリームに対して, Enumeratableをインクルー > >> ドするのは無理がないでもないですね. > > > そうですね。to_a なんか無限ループになるからダメだし。 > >今のままの Sieve で使える Enumerable のメソッドは停止条件を > >入れられる find くらいでしょうか。 > > あとは, このままでは, for が使えるのが嬉しいぐらいでしょうね. あれ、for が使えるのは each を定義してるからで Enumerable は関係ないですよね。 > > 明日(13日)のセミナにぎりぎり申し込めました。 > やはり, 実際に会うと思っていた雰囲気とちょと違うもんなんですねえ... おあいこですね。:-) --- 豊福@パパイヤ unbound@papaya.juice.or.jp toyofuku@juice.or.jp