在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()
和 b.getValue()
两次,而且这非常丑陋(并且破坏了内联运算符的点):
valA = a.getValue();
valB = b.getValue();
return (valA > valB ? valA : valB);
所以我正在寻找这样的东西:
return (a.getValue() > b.getValue) ? [param1] : [param2];
最佳答案
类似于:
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”的类别和用法。
关于Java 三元(内联)运算符 : accesing comparation variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15242282/