ternary operator
主に inについて少し疑問に思ってC++
いますが、他の言語にも当てはまると思います。
私が抱えている問題の最も良い例 (または問題と呼ぶべきですか? 概念的な問題だと思います) は、値のクランプです。
float clamped = (x<0.3) : 0.3 ? x;
私はこのコードを書きたいと思ってx
いますが、次のようなものがあると複雑になるかもしれません:
float clamped = (1.f - x + my_function()) > .2f ? .2f : (1.f - x + my_function());
これは私の意見では手に負えないところです。私はそれを書き直します:
float clamped = (1.f - x + my_function());
if (clamped > .2f)
clamped = .2f;
したがって、これは実際に最大2つの質問につながります
1: デフォルトの動作があるので、「true の場合はこれを実行し、それ以外の場合は、それが言ったことを実行する」と言うことができます。次のような疑似コードで:float clamped = (1.f - x + my_function()) > .2f : .2f ? **default**;
2: それでも最初の方法で行う場合、最初に条件を評価し、そうである場合false
は別の評価を行って から値を取得します(1.f - x + my_function())
か?
それのいくつかが理にかなっていることを願っています、それは私が今まで理解できなかったものです.