Как работает троичный оператор? - PullRequest
7 голосов
/ 21 января 2009

Пожалуйста, продемонстрируйте, как троичный оператор работает с обычным блоком if / else. Пример:

Boolean isValueBig = value > 100 ? true : false;

Точный дубликат: Как использовать троичный оператор?

Ответы [ 12 ]

29 голосов
/ 21 января 2009
Boolean isValueBig = ( value > 100  ) ? true : false;


Boolean isValueBig;

if(  value > 100 ) { 
      isValueBig = true;
} else { 
     isValueBig = false;
}
16 голосов
/ 21 января 2009

Разница между троичной операцией и if / else состоит в том, что троичное выражение является оператором, который оценивает значение, а if / else - нет.

Чтобы использовать ваш пример, перейдите от использования троичного выражения к if / else, вы можете использовать это утверждение:

Boolean isValueBig = null;
if(value > 100)
{ 
    isValueBig = true 
}
else
{
    isValueBig = false;
}

В этом случае, однако, ваше утверждение эквивалентно этому:

Boolean isValueBig = (value > 100);
10 голосов
/ 21 января 2009

Когда я был новичком в C ++, я обнаружил, что он помогает читать эту конструкцию следующим образом:

Boolean isValueBig = if condition ? then x else: y;

(Обратите внимание, что это недопустимый код. Это только то, чему я научился читать в своей голове.)

6 голосов
/ 21 января 2009
Boolean isValueBig;

if (value > 100)
{
   isValueBig = true;
}
else 
{
   isValueBig = false;
}
5 голосов
/ 21 января 2009

Я никогда не был поклонником троичного оператора, потому что думал, что его трудно читать. Когда это происходит, Джон Скит и его книга C # in Depth наконец ударили эту старую собаку по голове и заставили ее погрузиться. Джон сказал, и я перефразирую, думаю, что это вопрос. 1003 *

значение> 100?

"да": "нет"

Теперь слепой может видеть.

Надеюсь, это поможет вам сделать его второй натурой.

5 голосов
/ 21 января 2009
Boolean isValueBig;

if(value > 100) { isValueBig = true; } else { isValueBig = false; }
3 голосов
/ 21 января 2009

Как указано на странице оператора ?: MSDN , «условный оператор (? :) возвращает одно из двух значений в зависимости от значения логического выражения.»

Таким образом, вы можете использовать троичный оператор, чтобы возвращать больше, чем просто логические значения:

   string result = (value > 100 ) ? "value is big" : "value is small";
2 голосов
/ 21 января 2009

Убедитесь, что вы не смешиваете типы в истинных / ложных частях в Java. Это дает странные результаты: - (

2 голосов
/ 21 января 2009

Плохой пример, потому что вы могли бы легко написать

Boolean isValueBig = value > 100 ? true : false;

как:

bool isValueBig = value > 100

Кроме того, все остальные уже ответили. Я бы просто не рекомендовал использовать троичные операторы для установки значений bool, поскольку то, что вы оцениваете, уже является логическим значением.

Я понимаю, что это был просто пример, но на это стоило указать.

2 голосов
/ 21 января 2009

Пример PHP

<?php

  // Example usage for: Ternary Operator
  $action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

  // The above is identical to this if/else statement
  if (empty($_POST['action'])) {
    $action = 'default';
  } else {
    $action = $_POST['action'];
  }

?>

"Выражение (expr1)? (Expr2): (expr3) оценивается как expr2 , если expr1 равно TRUE , и expr3 , если expr1 равно FALSE . "

Документация PHP по операторам сравнения

...