【问题标题】:Is there a PHP like short version of the ternary operator in Java?Java中是否有类似PHP的短版三元运算符?
【发布时间】:2015-02-07 20:47:51
【问题描述】:

在 PHP 中,三元运算符有一个简短的版本。

expr1 ? expr2 : expr3;

变成

expr1 ? : expr3;

短版本返回 expr1 为 true 和 expr3 为 false 的结果。 这允许很酷的代码可以根据自己的当前状态填充变量。例如:

$employee = $employee ? : new Employee();

如果 $employee == null 或由于任何其他原因计算为 false,上面的代码将创建一个 new Employee(); 否则 $employee 中的值将重新分配给它自己。

我在 Java 中寻找类似的东西,但我找不到三元运算符的任何类似用例。所以我想问是否有这样的功能或类似的东西可以避免三元运算符的表达式之一以减少重复。

【问题讨论】:

  • 不,Java 中没有这样的短版本。

标签: java php ternary-operator


【解决方案1】:

不,没有。 (三元运算需要by definition,三个操作数)

从 PHP 5.3 开始,可以省略中间部分 三元运算符。表达式 expr1 ?: expr3 如果 expr1 返回 expr1 计算结果为 TRUE,否则为 expr3。

来源:The PHP Manual

就像 Java 中的那样,但在 Java 中,您需要指定两种结果:

三元 if-else 运算符与三个操作数一起工作,产生一个值,具体取决于 关于布尔断言的真假。它的形式如下 如下:-

boolean-exp ? value1 : value2

来源:

Java specs on the ternary conditional operator

Official Java documentation

The Java.net Blogs

另外请记住,与 Java 和其他所有具有类似运算符的流行语言不同,?: 在 PHP 中是关联的。所以这个:

<?php
$arg = "T";
$vehicle = ( ( $arg == 'B' ) ? 'bus' : 
             ( $arg == 'A' ) ? 'airplane' : 
         ( $arg == 'T' ) ? 'train' : 
         ( $arg == 'C' ) ? 'car' : 
         ( $arg == 'H' ) ? 'horse' : 
                               'feet' );
echo $vehicle;

打印 horse 而不是 train(这是您在 Java 中所期望的)

来源:

http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#operators

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-06
    • 2016-07-15
    • 2012-08-08
    • 2022-01-24
    • 2016-01-29
    • 2014-07-31
    • 2014-09-25
    • 2011-10-14
    相关资源
    最近更新 更多