またはfuncを返す関数があります。戻るまで、呼び続けたいです。これを行うための最も厄介な方法は何ですか?truefalsefuncfalse
do {
// do nothing
} while (func());
また..
while (func());
また..
while (func())
if (!func())
break;
それらのすべては私には本当にぎこちなくて直感的ではないように見えます。これに対する別の解決策はありますか?
またはfuncを返す関数があります。戻るまで、呼び続けたいです。これを行うための最も厄介な方法は何ですか?truefalsefuncfalse
do {
// do nothing
} while (func());
また..
while (func());
また..
while (func())
if (!func())
break;
それらのすべては私には本当にぎこちなくて直感的ではないように見えます。これに対する別の解決策はありますか?
オプションBが最も一般的に使用されていると思いますが、ループ本体が空であることをより明確にする必要があります。
while (func())
; // do nothing
また
while (func()) { /* do nothing */ }
ちなみに、これはある種の忙しい待機のように見えます。この場合、OSが提供する同期プリミティブを使用することで、回避でき、通常は回避する必要があります。
私は以前書いていました
while (func()) continue;
完全なビジーウェイトループが必要なとき(それほど頻繁ではありませんでした)。キーワードは意図を見逃しにくくし、コンパイルされてしまいます。:)
オプションBのバリエーション:
while (func())
{
// no-op
}
さて、3番目は何か違うことをします-それはfunc反復ごとに2回呼び出します。
私はあなたが2番目のものが欲しいと思います、そしてそれは他の人々を全く混乱させません。