是否有一种内联方法可以有条件地否定值或表达式,而无需使用如下所示的条件评估?:
result = (condition) ? value : -value;
result = value * ((condition) ? 1 : -1);
我目前正在使用 JavaScript,但我一直想知道使用它的其他语言是否也有同样的情况。
最佳答案
您可以执行(bool - !bool * 1) * value
。 (bool - !bool * 1)
返回 1
表示 true,-1
表示 false。一种方法可能有点矫枉过正;坚持原来的可读代码。使用 C/C++,您可以不用宏(但要小心 bool
将被评估两次)。
编辑:(bool - !bool) * value
适用于 Javascript 和 PHP(尚未测试其他版本)。我想我添加了 * 1
最初是为了防止它无法弄清楚它应该是一个 int :P
我不确定这是否更快(尽管我相信算术表达式比分支更快),并且正如其他人所说,您可能不需要担心速度。您也没有节省很多 Angular 色:P
关于java - 内联条件否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711121/