なかだです。

At Sat, 31 Jul 2010 19:06:51 +0900,
KISHIMOTO, Makoto wrote in [ruby-dev:41906]:
> loop のブロックが引数を取るようにして、
> loop {|tag|
>  ...
>  continue tag
>  ...
> }
>
> というかたちではどうでしょうか?

こんなのではどうでしょうか。


class Loop def loop begin t, val = catch(self) { yield self false } end while t val end def next(*values) Kernel.throw(self, [true, values]) end def break(*values) Kernel.throw(self, [false, values]) end def self.loop(&block) new.loop(&block) end end i = 0 Loop.loop do |tag| p(i += 1) tag.next if i < 3 p "end" tag.break end
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦