Pergunta

Por favor, demonstrar como o operador ternário funciona com um if / else bloco regular. Exemplo:

Boolean isValueBig = value > 100 ? true : false;

Exact Duplicate: Como faço para usar o operador ternário?

Foi útil?

Solução

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


Boolean isValueBig;

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

Outras dicas

A diferença entre a operação ternária e if / else é que a expressão ternária é uma declaração que avalia um valor, enquanto if / else não é.

Para usar o seu exemplo, a alteração do uso de uma expressão ternária de if / else você poderia usar a seguinte declaração:

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

Neste caso, porém, a sua declaração é equivalente a esta:

Boolean isValueBig = (value > 100);

Quando eu era novo para C ++, eu achei que ele ajudou a ler esta construção da seguinte forma:

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

(Note que este não é um código válido. É apenas o que eu me treinei para ler na minha cabeça.)

Boolean isValueBig;

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

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

Eu nunca fui um fã do operador ternário, porque eu pensei que era difícil de ler. Por acaso, Jon Skeet e seu livro, C # in Depth finalmente atingido este velho sobre a cabeça e comecei a afundar-se. Jon disse, e eu parafrasear, pense nisso como uma pergunta.

valor> 100?

"sim": "não"

Agora, o cego pode ver.

Espero que isso ajude você faz uma segunda natureza.

Como citado a partir da :? Page Operador MSDN , "o operador condicional (? :) retorna um dos dois valores, dependendo do valor de uma expressão booleana."

Assim você pode usar o operador ternário para retornar mais do que apenas booleans:

   string result = (value > 100 ) ? "value is big" : "value is small";

PHP Exemplo

<?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'];
  }

?>

"A expressão (expr1) (expr2): (expr3) avalia a expr2 se expr1 avalia a true e expr3 se expr1 avalia a false . "

Documentação PHP em Operadores de comparação

Certifique-se de que você não misture tipos de verdadeiro / falso peças em Java. Ela produz resultados estranhos: - (

Bad exemplo, porque você poderia facilmente escrever

Boolean isValueBig = value > 100 ? true : false;

como:

bool isValueBig = value > 100

Além disso, todos os outros já respondeu ele. Eu não recomendo o uso de operadores ternários para definir os valores bool, pois o que você está avaliando já é um valor booleano.

Eu percebi que era apenas um exemplo, mas valeu a pena apontar.

Outros têm respondido já mas aqui está uma coisa que você realmente deve saber sobre o uso do ternário e com isso quero dizer não nunca fazê-lo.

Vamos supor que você tem um pedaço de código que é suposto para retornar um objeto diferente para cada possível variação de algum valor, digamos que por amor de simpliticy um inteiro entre 1 e 5. Seus olhares código como este:

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();
}

É fácil de entender, mas um pouco pesado. Desde ternário é apenas outra maneira de escrever uma declaração if..else , que pode ser reformulado para esta

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

É chamado aninhada ternário . É mau, agora que você sabe sobre isso nunca use-o. Pode parecer ter seus usos, como o caso acima, mas é muito provável que, em situações da vida real que você precisa para usá-lo em algum lugar onde ele perde a legibilidade (pense configurações alterando com quantidade variável de parâmetros e tal).

setor Bonus: Nunca ajuste os valores de atributos dentro if (), basta olhar para isto: if(bool=true!=false) { .. }

Como citado da MSDN (observado em um post anterior)

resultado string = (valor> 100)? "Valor é grande": "valor é pequeno";

poderia ser lido como:

é um valor superior a 100? Se sim, resultado de cadeia é "valor é grande", se não, resultado de cadeia é "valor é pequeno".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top