0

答えは明らかな方もいらっしゃるかもしれませんが、答えが見つからないので、聞いてみる必要があります。多くの場合、関数がすべてが問題なく実行されたかどうかを返す必要がある場合は、失敗を追跡するブール値を使用します。

bool myFunction()
{
    bool ok = true;
    if (...) {
        if (...) {
            ok = ...;
        }
        ok = ok && (...);
    }
    ok = ok && (...);
    return ok;
}

存在しないので&&=、私はこの構文をよく使用します:(ok = ok && (...)条件(...)または値にすることができます)。しかし、私はこれを非常に不法だと思います。これをより簡潔かつエレガントに書くためのC++標準準拠の方法はありますか?

4

6 に答える 6

2

&=ブール値フラグで使用できます:

bool myFunction()
{
    bool ok = true;
    if (...) {
        if (...) {
            ok &= ...;
        }
        ok &= ...;
    }
    ok &= ...;
    return ok;
}
于 2012-10-10T06:01:57.890 に答える
2

okになった場合、追加のコードは実行されないため、早めに戻りますfalse

bool myFunction()
{
    bool ok = true;
    if (...) {
        if (...) {
            if (!...) return false;
        }
        if (!...) return false;
    }

    return (...);
}

これが、例外がエラー コードより優れているもう 1 つの理由です。例外を処理しないと、通常のコード パスのコードがスパゲッティ化されません。

于 2012-10-10T05:57:29.417 に答える
1

&=bool は 1 ビット型であり、すべての算術演算子が機能するため、等しい演算子を使用できます。

于 2012-10-10T06:01:57.700 に答える
1

使用してみてください:

&=

&&= の代わりに

于 2012-10-10T06:02:09.260 に答える
0

または、戻り値を使用しないことを選択できます。

成功または失敗に使用するオブジェクトまたは関数ポインターを渡します。

たとえば、オブジェクトの場合:

void onConditionOtherwise(BooleanAction& action)
{
    if (...) && (...) {
        action.success();
    } else {
        action.failure();
    }
}
于 2012-10-10T07:07:17.210 に答える
0

これを行う最も標準的な方法は、条件が満たされない場合に false を返すことです。それ以外の場合は、メソッドの最後に true を返します。したがって、実際にはそのブール変数は必要ありません。
そのように使用してください:

bool myFunction()
{
    if (...) {

    } else return false;

    return true;
}

ブール値の使用を主張する場合は、&= 演算子を使用してください。

于 2012-10-10T06:36:48.270 に答える