[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/10 00:54 / Filesize : 59 KB / Number-of Response : 301
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rubyは難しすぎ



43 名前:デフォルトの名無しさん mailto:sage [2006/09/24(日) 23:16:11 ]
こういうのは、使えそうな場面に行き着いたとき自然と使ってるもんじゃないか?
本スレでcallccを使えば内部イテレータを外部イテレータに出来そうだと聞いて、やったら出来たワロタ。

class Iterator
attr_reader :item, :retval
def initialize(it)
@p = lambda {|*args| @c_.call args if callcc {|@c| true }}
@item = callcc {|@c_|
@retval = it.call &@p
@c_.call nil
}
end
def has?
return @item != nil
end
def next
v = @item
@item = callcc {|@c_| @item = @c.call }
return v
end
end

a = [666, nil, "unko", :+]
it = Iterator.new a.method(:each)
puts it.next while it.has?






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<59KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef