同じ動作をさせる条件において、多くの "or"(|)を避けることは可能でしょうか?

 

どのオペレーターもフィットしない。if(A || B || C || D || E) Action; を使わずに、他の方法はないのでしょうか?

私が考えている質問の重要性と、より合理的な解決策が見つからないため、モデレーターに一般質問者スレッドに送らないようお願いしていますありがとうございました。

 

は、単にブール変数にすることができます、例えば。

X=A||B;

X=X|C|D。

X=X||E.

if (X) Action;

 
Avals:

は、単にブール変数にすることができます、例えば。

X=A||B;

X=X|C|D。

X=X||E.

if (X) Action;

ご感想をお寄せいただきありがとうございました。そして、これらのブールは、常に変化する市場の状況に応じて多くのパラメータを含む、非常に複雑なものになる可能性があります。
 
borilunad:
ご感想をお寄せいただきありがとうございました。そして、これらのブールは、絶えず変化する市場の状況に応じて、かなり複雑になることがあるのですね?


勿論

 
Avals:


勿論

いつもありがとうございます。これからやってみます!

ドックを覗いて見てください。

bool a = true;
bool b = false;
bool c = 1;

а = (isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo);
boolean a にこの値を与えることはできますか?

 
borilunad:

いつもありがとうございます。これからやってみます!

ドックを覗いて見てください。


できますが、スピードはかなり落ちます。
 
Vinin:

できますが、スピードが極端に落ちます。
if()の "or "が速度に影響するのでは?
 
borilunad:
if()の "or "が速度に影響するのでは?

もちろん、そうでしょう。確認する必要があります。
 
Vinin:

もちろん、そうでしょう。チェックする必要があります。
でも、早く見つからないなら、if()にこだわります!すでに、すべての機能で自分にとって不要なチェックを削除することで、速度低下を顕著に抑えています。ご清聴ありがとうございました。可能な限りの選択肢を学び、確認することができれば幸いです
 

また、この方法で計算を最適化することもできます。

    bool M = false;

    if (A) M = true; else if (B) M = true; else if (C) M = true; else if (D) M = true; else if (E) M = true;
    if (M) Action;
 

あるいはこんな感じ。

    bool M = true;

    if (!A) if (!B) if (!C) if (!D) if (!E) M = false;
    if (M) Action; 
理由: