Hier eine Beschreibung des FizzBuzz Problem ist, wie in diesem Jeff Atwood article angegeben.
Schreiben Sie ein Programm, das die Zahlen von 1 bis 100. Aber für ein Vielfaches von drei print „Fizz“ anstelle der Anzahl und für die Vielfache von fünf print „Buzz“ druckt. Für Zahlen, die Vielfache von beiden sind drei und fünf drucken "FizzBuzz".
Eine ternary operator ist eine Kurzschrift für eine if-else-Anweisung. Das allgemeine Format ist:
cond ? evaluate_if_cond_is_true : evaluate_if_cond_is_false
Also, wenn ich schreibe:
int isEven = (i % 2 == 0) ? 1 : 0;
entspricht dem folgenden Code:
if (i % 2 == 0) {
isEven = 1;
} else {
isEven = 0;
}
Wo cond i % 2 == 0
ist, evaluate_if_cond_is_true ist 1
und evaluate_if_cond_is_false ist 0
.
Das Schöne an ternären Betreibern ist, dass sie kombiniert werden können. Dies bedeutet, dass die Anweisung, die ausgeführt wird, wenn eine der beiden Bedingungen wahr oder falsch ist, ein anderer ternärer Operator sein kann.
Let setzten den gesamten Zustand in einer besser lesbaren Art und Weise:
i%3==0 ?
i%5==0 ?
"FizzBuzz"
: "Buzz"
: i%5==0 ?
"Fizz"
: i
Und diese Zuordnung zu if-else-Anweisungen sind leicht mit den Regeln oben erklärt:
if (i%3==0) {
if (i%5==0) {
"FizzBuzz"
} else {
"Buzz"
}
} else {
if (i%5==0) {
"Fizz"
} else {
i
}
}
Dies gilt nicht, Code Da das Ergebnis des ternären Operators jedoch im Ergebnisausdruck inline ist, wird es als Eingabe für den Befehl puts verwendet.
Vielen Dank - die Klammer und Ihre Erklärung aufgelöst hat dieses Problem – Damian