Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

155
Visualizações
¿C# tiene algún equivalente a `cond` de Elixir?

En Elixir, si quiero verificar varias condiciones booleanas, en lugar de un lío feo de lógica if/else, puedo hacer esto elegantemente:

 guess = 46 number_of_guesses = 3 cond do number_of_guesses > 5 -> IO.puts "Too many guesses! You lose." guess == 46 -> IO.puts "You guessed 46!" guess == 42 -> IO.puts "You guessed 42!" true -> IO.puts "I give up." end

El programa anterior genera el siguiente resultado:

¡Adivinaste 46!

(Ejemplo derivado de Tutorialspoint , pero más elaborado para demostrar que no todas las expresiones deben contener la misma variable).

¿C# tiene algo similar o necesitaría usar if/else?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si está comparando con un valor en casi todos los casos, aún puede usar una expresión de cambio , con protectores de caso:

 int guess = 46; int numberOfGuesses = 3; Console.WriteLine( guess switch { _ when numberOfGuesses > 5 => "Too many guesses! You lose.", 46 => "You guessed 46!", 42 => "You guessed 42!", _ => "I give up." } );

Tenga en cuenta que en el primer brazo, coincidí con cualquier cosa (el patrón de guión bajo _ ) pero solo "cuando el número de conjeturas> 5". O, en este caso, incluso puede hacer una combinación de patrones más elegante:

 Console.WriteLine( (guess, numberOfGuesses) switch { (_, > 5) => "Too many guesses! You lose.", (46, _) => "You guessed 46!", (42, _) => "You guessed 42!", _ => "I give up." } );

Pero, por supuesto, esto no es posible en todas las situaciones.

Si todos los brazos son condiciones no relacionadas, usar este tipo de construcción _ when ... se siente un poco abusivo, por lo que, alternativamente, puede usar una cadena de operadores ternarios :

 var x = condition1 ? someValue1 : condition2 ? someValue2 : condition3 ? someValue3 : valueWhenNoConditionsAreTrue;

Aunque siento que incluso esto puede ser un poco sorprendente a primera vista.

Si desea ejecutar declaraciones en esas ramas, en lugar de expresiones, entonces debe usar una estructura if-else-if simple y antigua, o si se puede usar la coincidencia de patrones, una declaración de cambio (pero tenga en cuenta que _ when ... no se puede usar en una declaración de cambio).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda