稲葉です. Subject: [ruby-list:13530] iterator <-> cursor (Re: iterator for Dummies) From: Shugo Maeda <shugo / netlab.co.jp> Date: Fri, 9 Apr 1999 10:26:21 +0900 > 前田です。 : > 逆に、イテレータからカーソルへの変換は普通できません。 > Rubyでもスマートな方法はないんじゃないかと思うのですが、スレッド > を使えばできないことはないですね。 1.3系なら, スレッドより遅いですけどcallccでもできるみたいです. class Cursor def initialize(iter) @iter = iter @cont = nil @finished = false end def next return nil if @finished @cont.call if @cont @iter.call {|obj| @finished = true if obj.nil? callcc{|@cont| return obj} } end end # 近頃callccで遊んでます... -- 稲葉 浩人 <inaba / sdd.tokyo-sc.toshiba.co.jp/inaba / st.rim.or.jp>