Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

153
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!