如果没有 else 三元运算符

Posted

技术标签:

【中文标题】如果没有 else 三元运算符【英文标题】:If without else ternary operator 【发布时间】:2013-12-01 22:13:39 【问题描述】:

到目前为止,我一直在网上搜索,该语句总是有if和else条件,例如a ? b : c。我想知道if三元语句是否可以在没有else的情况下使用。 假设我有以下代码,如果PreparedStatement 不为空,我希望关闭它

(我正在使用 Java 编程语言。)

PreparedStatement pstmt;

//.... 

(pstmt!=null) ? pstmt.close : <do nothing>;

【问题讨论】:

三元运算符不等同于 if/else。它实际上是一个必须有值的表达式。 你不能在没有 else 的情况下使用三元,但你可以使用 Java 8 Optional 类:Optional.ofNullable(pstmt).ifPresent(pstmt::close)。请参阅下面的答案。 代替你的 只是放置一个带有值的变量,比如数字 0 或字符串,它不应该做任何事情,尽管它确实返回一个类型,甚至是 undefined 或null 或 void 类型 MIGHT workm 但也可能导致 java 中的错误 【参考方案1】:

使用:

<logic Expression> ? <method> : null;

例子:

(pstmt!=null) ? pstmt.close : null;

是肮脏的解决方案,但有效...

【讨论】:

【参考方案2】:

javascript 中你可以简单地做:

expression ? doAction() : undefined

因为这是在真正的 if 语句中实际发生的事情,所以 else 子句只是未定义的。我想你可以在(几乎?)任何编程语言中做几乎相同的事情,因为 else 子句只是放置一个不返回值的空类型变量,它不应该导致任何编译错误。

或者如果所有其他方法都失败了,就创建一个函数返回

function oy(x1,x2)if(x1) return x2();

oy(etzem==6, ()=>yichoyliss=8);

【讨论】:

【参考方案3】:

pstmt != null &amp;&amp; pstmt.close;

上面的代码行翻译为当表达式的左侧“翻译”为真时 -> 执行右侧。

【讨论】:

【参考方案4】:

是的,你 can 确实这样做了(至少在 JavaScript 中):

condition && x = true;

或(在 JavaScript 中,在 Java 中可能有类似的方法):

void(condition && x = true)

【讨论】:

我不确定 Java,但是使用 React,上面的语句可以工作。然而,它本身是行不通的,除非你把每一边都放在括号里。 IE。 (条件) && (x = true);【参考方案5】:

你不能在没有 else 的情况下使用三元,但要在一行中做一个“if-without-else”,你可以使用 Java 8 Optional 类。

PreparedStatement pstmt;

//.... 

Optional.ofNullable(pstmt).ifPresent(pstmt::close); // <- but IOException will still happen here. Handle it.

【讨论】:

【参考方案6】:

No, you cannot do that. 试试这个:

if(bool1 && bool2) voidFunc1();

【讨论】:

【参考方案7】:

正如其他答案中提到的,您不能使用三元运算符来执行此操作。

但是,如果需要,您可以使用 Java 8 Optional 和 lambdas 将这种逻辑放入单个语句中:

Optional.of(pstmt).ifPresent((p) -> p.close())

【讨论】:

【参考方案8】:

三元运算称为三元运算,因为它需要 3 个参数,如果需要 2,则为二元运算。

如上所述,它是一个返回值的表达式

如果您省略 else,您将遇到未定义的情况,即表达式不会返回值。

因此,正如其他答案中所指出的,您应该使用 if statement

【讨论】:

【参考方案9】:

三元if 运算符是特定的三元运算符。独一无二的。

来自Wiki:

在数学中,三元运算是 n = 3 的 n 元运算。

这意味着您需要所有 3 个操作数。

【讨论】:

【参考方案10】:

当你只有一个选择时为什么要使用三元运算符?

if (pstmt != null) pstmt.close(); 

够了!

【讨论】:

【参考方案11】:

把它写出来?

if(pstmt != null) pstmt.close();

长度完全相同。

【讨论】:

以上是关于如果没有 else 三元运算符的主要内容,如果未能解决你的问题,请参考以下文章

python 的三元运算符

三元运算符

Java中与if else相比三元运算符的弊端?

三元(三目)运算符

Python之三元运算集合函数

if/else vs 三元运算符