途中判定ループ
前判定、後判定ループだけじゃなくて、途中判定ループがあればいいなと思うとき。
先読み処理のループ
#
が現れるまで処理。多分次の3つのどれかになる。
- 1. 2度同じことを書く
c = i.read(); while(c != '#') { o.write(c); c = i.read(); }
or
for(c = i.read(); c != '#'; c = i.read()) { o.write(c); }
- 2. 無限ループ + 脱出
do { c = i.read(); if(c == '#') break; o.write(c); } while("infinite loop");
- 3. 代入の評価値を使う
while((c = i.read()) != '#') { o.write(c); }
どれもやだ…(´・ω・`)
1 は冗長な感じが嫌。 2 は無限ループが嫌。 3 は代入がステートメント的に扱いたいので嫌。
提案
もし、途中判定ループ loop{A}continue(pred){B}
なるものがあれば,
loop { // 前処理 c = i.read(); } continue(c != '#') // 途中条件(継続判定) { // 後処理(継続時のみ) o.white(c); }
と書ける。
私の知らない言語にはこういうのがあるのかなぁ。