Есть ли в Java краткая версия тернарного оператора в Java?

В PHP троичный оператор имеет сокращенную версию.

expr1 ? expr2 : expr3;

меняется в

expr1 ? : expr3;

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

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

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

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

5

Решение

Нет, нет (Тройная операция требует, по определению, три операнда)

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

Источник: Руководство по PHP

Как и в Java, но в Java вам нужно указать оба результата:

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

boolean-exp ? value1 : value2

Источники:

Java-спецификации на троичный условный оператор

Официальная документация Java

Блоги Java.net

Также имейте в виду, что, в отличие от 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

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]