TwitterのTLでdo-whileが賑わっていたので。
調べてみたらbegin-end
とwhile
修飾子で出来るらしい。キモい(かなり)
while 修飾子 (中略) 左辺の式が begin 節である場合にはそれを最初に一回評価してから繰り返します。
cond = false begin puts 'foo' end while cond # => foo
気持ち悪いですよね。
こんなアプローチはどうでしょうか
cond = false def do_while(cond, &block) block.call block.call while cond.call end do_while ->(){cond} do puts 'foo' end # => foo
かっこいいですね。え、キモい?そう…