以下の内容はhttps://shuzo-kino.hateblo.jp/entry/2015/05/21/232625より取得しました。


until修飾子でloop系構文が不要になるケースがある

until修飾子は後置きのifみたいな感じで使える構文です。
違いは、フラグが立つまで延々と読み続けてくれること。
StringIOやSerialPortみたいな読みに行く系ライブラリでは重宝します。

実際のところ

たとえば、以前扱ったN進数リテラルが混在している文字列を切り分ける用途をStringIOで書き直す場合、

require 'stringio'

s = StringIO.new("\u0012aga\x98ga987HH")
(ary ||= []) << s.read(2) until s.eof?
p ary

てな感じでやることができます。
これは、

require 'stringio'

s = StringIO.new("\u0012aga\x98ga987HH")

until s.eof?
(ary ||= []) << s.read(2)
end
p ary

と等価です。

入り組んだ処理はメソッドにまとめてしまえば見通しよく書き直せる……かも?

参考もと

制御構造




以上の内容はhttps://shuzo-kino.hateblo.jp/entry/2015/05/21/232625より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14