Aquí se presenta una descripción del problema FizzBuzz como se indica en este Jeff Atwood article.
escribir un programa que imprime los números del 1 al 100. Pero para múltiplos de tres impresión "Fizz" en lugar del número y de los múltiplos de cinco de impresión "zumbido". Para números que son múltiplos de tres y cinco imprimen "FizzBuzz".
A ternary operator es una escritura abreviada para una instrucción if-else. El formato general es:
cond ? evaluate_if_cond_is_true : evaluate_if_cond_is_false
Así que si escribo:
int isEven = (i % 2 == 0) ? 1 : 0;
es equivalente al siguiente código:
if (i % 2 == 0) {
isEven = 1;
} else {
isEven = 0;
}
Dónde cond es i % 2 == 0
, evaluate_if_cond_is_true es 1
y evaluate_if_cond_is_false es 0
.
Lo bueno de los operadores ternarios es que se pueden combinar. Esto significa que la instrucción para ejecutar cuando cualquiera de las condiciones se evalúa como verdadera o falsa puede ser otro operador ternario.
Let puso toda la condición de una forma más legible:
i%3==0 ?
i%5==0 ?
"FizzBuzz"
: "Buzz"
: i%5==0 ?
"Fizz"
: i
y cartografía sobre esto a las declaraciones si-si no es fácil con las normas explicado anteriormente:
if (i%3==0) {
if (i%5==0) {
"FizzBuzz"
} else {
"Buzz"
}
} else {
if (i%5==0) {
"Fizz"
} else {
i
}
}
Esto no es un código válido pero como el resultado del operador ternario está subrayado en la expresión de resultado, se usa como entrada para el comando puts.
Muchas gracias - el paréntesis y su explicación se ha resuelto este problema – Damian