Как тернарный оператор работает?

Спецификация POSIX для встроенной оболочки . предназначена для поиска файла по путям из $PATH, аналогично тому, как выполняется поиск исполняемых файлов. Это расширение Bash, которое также ищет файл в текущем каталоге, если его нет в $PATH.

Таким образом, . ./conf.conf является POSIX-совместимым способом сделать это, и вы наблюдаете поведение как с Bash, так и с sh. Однако . conf.conf зависит от Bash (sh будет искать только $PATH), поэтому вы получите результат только с Bash.

8
задан Community 23 May 2017 в 12:01
поделиться

12 ответов

Boolean isValueBig = ( value > 100  ) ? true : false;


Boolean isValueBig;

if(  value > 100 ) { 
      isValueBig = true;
} else { 
     isValueBig = false;
}
30
ответ дан 5 December 2019 в 04:28
поделиться

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

Для использования примера, изменяющегося от использования троичного выражения к тому, если/еще Вы могли бы использовать этот оператор:

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

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

Boolean isValueBig = (value > 100);
16
ответ дан 5 December 2019 в 04:28
поделиться
Boolean isValueBig;

if (value > 100)
{
   isValueBig = true;
}
else 
{
   isValueBig = false;
}
6
ответ дан 5 December 2019 в 04:28
поделиться

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

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

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

10
ответ дан 5 December 2019 в 04:28
поделиться
Boolean isValueBig;

if(value > 100) { isValueBig = true; } else { isValueBig = false; }
5
ответ дан 5 December 2019 в 04:28
поделиться

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

значение> 100?

"да": "нет"

Теперь слепые видят.

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

5
ответ дан 5 December 2019 в 04:28
поделиться

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

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

   string result = (value > 100 ) ? "value is big" : "value is small";
3
ответ дан 5 December 2019 в 04:28
поделиться

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

2
ответ дан 5 December 2019 в 04:28
поделиться

Пример 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 оценивает к ПРАВДА, и expr3, если expr1 оценивает ко ЛЖИ".

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

2
ответ дан 5 December 2019 в 04:28
поделиться

Как заключено в кавычки из MSDN (отмеченный в предыдущем сообщении)

представить результат в виде строки = (значение> 100)? "значение является большим": "значение является маленьким";

Мог быть считан как:

Действительно ли значение больше, чем 100? Если да, строковым результатом является "значение, является большим", если не, строковым результатом является "значение, является маленьким".

0
ответ дан 5 December 2019 в 04:28
поделиться

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

Boolean isValueBig = value > 100 ? true : false;

как:

bool isValueBig = value > 100

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

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

2
ответ дан 5 December 2019 в 04:28
поделиться

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

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

if(i==1) {
    return new ObjectOne();
} else if(i==2) {
    return new ObjectTwo();
} else if(i==3) {
    return new ObjectThree();
} else if(i==4) {
    return new ObjectFour();
} else if(i==5) {
    return new ObjectFive();
} else {
    return new DefaultObject();
}

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

return (i==1) ? new ObjectOne() :
       (i==2) ? new ObjectTwo() :
       (i==3) ? new ObjectThree() :
       (i==4) ? new ObjectFour() :
       (i==5) ? new ObjectFive() : new DefaultObject();

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

Бонусный сектор: Никогда не устанавливайте значения атрибута внутри, если (), просто посмотрите на это: if(bool=true!=false) { .. }

1
ответ дан 5 December 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: