2014-12-09 3 views
4

В PHP тернарный оператор имеет короткую версию.Есть ли PHP как короткая версия тернарного оператора в Java?

expr1 ? expr2 : expr3; 

изменения в

expr1 ? : expr3; 

Короткая версия возвращает результат expr1 на истинный и Expr3 на ложь. Это позволяет использовать классный код, который может заполнять переменные на основе их собственного текущего состояния. Например:

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

If $employee == null или оценивающего ложь по любой другой причине, приведенный выше код будет создавать new Employee(); В противном случае значение $employee будет переназначен на себя.

Я искал что-то подобное на Java, но я не мог найти подобного примера использования тернарного оператора. Поэтому я спрашиваю, существует ли такая функциональность или что-то подобное, что позволяет избежать одного из выражений тернарного оператора, чтобы уменьшить дублирование.

+0

Нет, нет каких-либо короткая версия, как это в Java. –

ответ

9

Нет, нет. (Тернарная операция требует, by definition, три операнда)

Начиная с PHP 5.3, можно оставить в среднюю часть тройного оператора . Выражение expr1?: Expr3 возвращает expr1, если expr1 оценивает значение TRUE и expr3 в противном случае.

Источник: The PHP Manual

Просто, как в Java, но в Java вы должны указать оба результата:

Тройная если-иначе оператор работает с тремя операндами получения значения в зависимости об истине или ложности булевого утверждения. Это форма, как следующим образом: -

boolean-exp ? value1 : value2 

Источники:

Java specs on the ternary conditional operator

Official Java documentation

The Java.net Blogs

также иметь в виду, что, в отличие от Java и любой другой популярный язык с си milar operator, ?: оставлен ассоциативным в 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

Смежные вопросы