0

Java では、次のような式があります。

return (a.getValue() > b.getValue()) ? a.getValue() : b.getValue();

私が 13 歳の頃、MSL (mIRC Scriptint Language) でコーディングしていました。その言語には、次の三項演算子がありました。

return iif($valueOfA > $valueOfB, $v1, $v2);

ここで、$v1 と $v2 は $valueOfA と $valueOfB を表します。

私はa.getValue()and を2 回呼び出さなければならないのが好きではありません。また、これは非常に醜いです (そして、インライン演算子b.getValue()のポイントを壊します):

valA = a.getValue();
valB = b.getValue();
return (valA > valB ? valA : valB);

だから私はこのようなものを探しています:

return (a.getValue() > b.getValue) ? [param1] : [param2];
4

3 に答える 3

3

何かのようなもの :

return ((a.getValue() > b.getValue()) ? a : b)).getValue();

すでに役立つ可能性があります。A & B クラスにいくつかのメソッドを実装して、「A」と「B」を直接比較して、次のようなものを記述できるようにすることもできます。

return ((a.greaterThan(b)) ? a : b).getValue(); // no operator overload in Java

また、オブジェクトを使用している場合は、a または b (それらの「値」ではなく) を返すことをお勧めします。

これはもちろん、「a」と「b」のクラスと使用法に依存します。

于 2013-03-06T08:30:44.433 に答える
2

だから私はこのようなものを探しています: return (a.getValue() > b.getValue) ? [param1] : [param2];

Java 言語は明確に定義されています。存在しない機能を探すのは無駄です。または、物事を単純にするために「いいえ」。

そしてコメントとして、これは:

iif($valueOfA > $valueOfB, $v1, $v2);

オペレーターではありません。マクロ、関数、メソッドは使用できますが、演算子は使用できません。

于 2013-03-06T08:29:46.680 に答える
1

これを行うのはどうですか?

int x, y;
int result =((x = a.getValue()) > (y = b.getValue())? x: y);

上記の例:

  1. 2 つの整数変数 (または任意の型) を作成します。
  2. 三項演算では、a.getValue() を x に、b.getValue() を y に割り当てます。
  3. テストを実行し、条件に従って変数を返します。
于 2013-03-06T08:57:07.170 に答える