当前位置: 首页 > 知识库问答 >
问题:

三元算子

西门淮晨
2023-03-14

有没有可能改变这一点:

if (string != null) {
    callFunction(parameters);
} else {
    // Intentionally left blank
}

到三元运算符

共有3个答案

太叔炎彬
2023-03-14

三元运算符可用于组合两个表达式,但空语句不是表达式。

如果方法返回值(read:is not declared < code > void ),则方法调用可以用作表达式,并且它可以与伪常数< code>null一起使用,以形成三元运算符,但是结果将再次是在需要语句的地方不允许的表达式,换句话说,它不能替换< code>if语句。

通过添加另一个采用表达式并没有附加额外副作用的构造,您可以构造一个完整的替换。例如。通过声明和分配一个新的、否则未使用的局部变量,您可以获得:

Object dummy=condition? callFunction(parameters): null;

但是简单地说if(条件)调用函数(参数)没有任何好处;。它甚至可能会增加不必要的开销,因为如果返回值是原始类型,它将执行自动装箱。

用Java

((Runnable)(condition? ()->callFunction(parameters): ()->{})).run();

但它仍然没有简单使用if的优势。

闻人宇定
2023-03-14

是的。您可以在< code>else块中保持相同的< code>null。

String result = str !=null ?  callFunction(parameters) : null;

确保callFunction(参数)返回字符串

万俟高峻
2023-03-14

Java中的< code >三元运算符就像这样...

return_value = (true-false condition) ? (if true expression) : (if false expression);

…另一种看待它的方式…

return_value = (true-false condition) 
             ? (if true expression) 
             : (if false expression);

你的问题有点模糊,我们不得不在这里假设。

>

  • 如果(并且仅当)的调用函数(…)声明一个非无效的返回值(对象字符串int,等等…)-它似乎没有通过你的代码这样做-那么你可以这样做…

    return_value = (string != null) 
                 ? (callFunction(...)) 
                 : (null);
    

    如果callFunction(…)未返回值,则不能使用三元运算符!就这么简单。你将使用一些你不需要的东西。

    • 请发布更多代码以清除任何问题

    尽管如此,三元运算符应该只代表替代分配!!您的代码似乎没有这样做,所以您不应该这样做。

    他们应该这样工作...

    if (obj != null) {            // If-else statement
    
        retVal = obj.getValue();  // One alternative assignment for retVal
    
    } else {
    
        retVal = "";              // Second alternative assignment for retVale
    
    }
    

    这可以转换为。。。

    retVal = (obj != null)
           ? (obj.getValue())
           : ("");
    

    因为看起来你可能试图将这段代码重构为一行代码,所以我添加了以下代码

    另外,如果你的假子句真的是空的,那么你可以这样做......

    if (string != null) {
    
        callFunction(...);
    
    } // Take note that there is not false clause because it isn't needed
    

    if (string != null) callFunction(...);  // One-liner
    

  •  类似资料:
    • 模板可以支持三元运算符,如: {$status?'发布':'下线'} {$vo.status?'发布':'下线'} {$vo['status']?'发布':'下线'} 支持条件判断表达式: {$a==$b ? 'yes' : 'no'} 条件运算符可以是==、===、!=、!==、>=、<=

    • 请参考:http://www.kancloud.cn/manual/thinkphp/1802

    • 模板可以支持三元运算符,如: {$status?'发布':'下线'} {$vo.status?'发布':'下线'} {$vo['status']?'发布':'下线'} 支持条件判断表达式: {$a==$b ? 'yes' : 'no'} 条件运算符可以是==、===、!=、!==、>=、<=

    • 条件(三元)运算符是 JavaScript 仅有的使用三个操作数的运算符。一个条件后面会跟一个问号(?),如果条件为 truthy ,则问号后面的表达式A将会执行;表达式A后面跟着一个冒号(:),如果条件为 falsy ,则冒号后面的表达式B将会执行。本运算符经常作为 if 语句的简捷形式来使用。(MDN) 三元运算符,也称条件运算符、三目运算符。 三元运算符可以代替简单的 if 语句。 1. 语

    • 有没有可能改变这一点: …一个三元运算符?

    • 我能用java写 甚至我可以在方法参数中传递它。 我怎么把它转换成Kotlin?在Kotlin中写同样的东西时显示错误。