-1

Можно использовать сокращенную запись для трехкомпонентных назначения выражений типатроичного назначения без «другого» выражения

boolean x = false; 
// ... code ... 
a = x ? b : a; // Assigning a to a is pointless 
a += x ? 1 : 0; // Adding 0 to a is pointless 

Я думаю, что-то вдоль линий

a = x ? b; // Assign b to a if x is true 
a += x ? 1; // Add 1 to a if x is true 

не что это экономит много ввода, мне просто интересно, если что-то вроде этого существует. Недавно я обнаружил null coalesce operator в PHP 7, который делает что-то подобное. Для меня это выглядит намного чище, чем

if(x) a = b; 
if(x) a += 1; 

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

+3

Используйте 'if' заявление. Именно поэтому Java предоставляет его. – nbro

+0

Кстати, Java - это прагматичный язык, который пытается избежать псевдонимов и множественных вариантов для пользователя; вместо этого он фокусируется на простоте (хотя может показаться странным, кто-то читает этот комментарий, но это ощущение, что я отношусь к Java после использования его в течение нескольких лет). – nbro

+0

Что мешает вам включать эту же строку в один из ваших классов Java и самостоятельно проверять, что она не компилируется? – walen

ответ

0

К сожалению, это не поддерживается Java.

С официальным оракулом документа:

Другим условным оператором является:?, Который можно рассматривать как стенографию для если-то-другого заявления (обсуждается в отчетности разделе Flow Control этого урока) ,
Этот оператор также известен как тернарный оператор, поскольку он использует три операнда.
В следующем примере этот оператор следует читать следующим образом: «Если someCondition является истинным, назначьте значение value1 в противном случае, присвойте значение value2 для результата».

Следующая программа, ConditionalDemo2, тесты оператора?::

class ConditionalDemo2 { 

    public static void main(String[] args){ 
     int value1 = 1; 
     int value2 = 2; 
     int result; 
     boolean someCondition = true; 
     result = someCondition ? value1 : value2; 

     System.out.println(result); 
    } 
} 

Поскольку someCondition правда, эта программа печатает "1" на экране.
Используйте оператор?: Вместо оператора if-then-else, если он делает ваш код более удобочитаемым;
например, когда выражения компактны и без побочных эффектов (например, присвоений).

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html

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