岩室です。 GeneratorとFiberの扱いについて。 1) 1.9 でGeneratorの復活はあるか? [ruby-dev:34278] を見る限り、無さそうにも思えますが……。 2) (1)がNoの場合、1.8.x に [ruby-dev:35369] のような Fiber のインターフェースを持つモジュールを導入できないか? 今使ってるのは1.8なのですが、どちらかに決めてもらえると、安心してジェネレータ風のコードが書けます。 2008/07/06 21:30 IWAMURO Motonori <deenheart+ruby / gmail.com>: > 岩室です。 > > 2008/07/06 15:32 Nobuyoshi Nakada <nobu / ruby-lang.org>: >> 完全に同じではありませんが、Generatorの代替としては >> Enumerator#nextが使えるはずです。 > > 済みません、マニュアルをあさってみたんですが、Generator風の使い方が全くわかりませんでした。 > やりたいことはこんな感じのことですが、Enumeratorではどう書けばいいんでしょう。 > > # Generatorのブロックの中での処理結果を、 > g = Generator.new{|g| IO.popen("tar --help") {|io| io.each_line > {|line| g.yield(line)}}} > ... > # どこか遠くのところで取得したい > while g.next?; io.print(g.next); end > >> というかGeneratorの代わりにFiberを、という流れが不思議なんですが。 > > 実は手元にFiberで書き直したgenerator.rbもあったんですが……。書くのはすごく簡単だったのに > 消えてたので、何か理由があるのかと思って過去メールをあさってみたところ、[ruby-dev:34278] > の流れを見て「Generatorは消しましょう」というのがコンセンサスなのかと思ったのでした。 > > で、どうせ今から書くのならFiberで書いておけば将来の移行のときに考えなくていいんじゃないか > ということで、少なくとも上の例で書いたようなことができる程度の機能を実装してみたのが、 > 件のコードです。 -- IWAMURO Motnori <http://vmi.jp/>