0

在 Java 中,我有如下表达式:

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

当我大约 13 岁时,我曾经使用 MSL(mIRC Scriptint 语言)进行编码。该语言具有以下三元运算符:

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

其中 $v1 和 $v2 代表 $valueOfA 和 $valueOfB。

我不喜欢我必须调用a.getValue()andb.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) ?[参数1]:[参数2];

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. 在三元运算中,将 a.getValue() 分配给 x,将 b.getValue() 分配给 y。
  3. 执行测试并根据条件返回变量。
于 2013-03-06T08:57:07.170 回答