Plötzlich kam der folgende Code heraus und es war eine Geschichte, die ich mich fragte.
String str =Bedingter Ausdruck 1?Bedingter Ausdruck 2? "A" : "B" : "C";
Um eine einfache Tabelle zu erstellen, welche Art von Bewegung wird dies sein
Bedingter Ausdruck 1 | Bedingter Ausdruck 2 | Ausgabeergebnis |
---|---|---|
true | true | A |
true | false | B |
false | false | C |
false | true | C |
Ich fand es heraus, als ich es zusammenstellte, aber ich war verwirrt.
Der ternäre Operator, der mehrere bedingte Ausdrücke hat, ist völlig unbekannt. Ich werde Klammern setzen, damit ich sie leicht lesen kann.
String str =Bedingter Ausdruck 1? (Bedingter Ausdruck 2? "A" : "B") : "C";
Dies macht es etwas einfacher zu sehen. Wenn Sie das nächste Mal einen ähnlichen Code sehen, setzen Sie Klammern (in Ihrem Kopf)! Ich werde darauf hinweisen.
Immerhin war es am einfachsten zu verstehen, wenn ich es mit einer if ~ else-Anweisung umschrieb.
String str = "";
if (Bedingter Ausdruck 1) {
if (Bedingter Ausdruck 2) {
str = "A";
} else {
str = "B";
}
} else {
str = "C";
}
Wenn Sie es mit if ~ else ausdrücken, erhöht sich zwangsläufig die Anzahl der Zeilen. Ich bin der Meinung, dass der ternäre Operator intelligenter geschrieben werden kann.
Dies ist die in den Kommentaren gelehrte Methode. Versuchen Sie, Zeilenumbrüche anstelle von Klammern einzufügen.
String str =Bedingter Ausdruck 1
?Bedingter Ausdruck 2? "A" : "B"
: "C";
Es ist üblich, einen ternären Operator in eine Zeile zu schreiben, aber es ist möglicherweise besser, ihn nur dann in mehreren Zeilen auszudrücken, wenn mehrere Bedingungen vorliegen. Ich denke, es ist leichter zu sehen als Klammern. * Es ist nur ein persönliches Gefühl ...
Dies ist auch die in den Kommentaren gelehrte Methode. Die Bedingungen wurden überprüft, um die Anzeige zu erleichtern.
String str = !Bedingter Ausdruck 1? "C" :Bedingter Ausdruck 2? "A" : "B";
Wenn Sie dies weiter brechen,
String str =
!Bedingter Ausdruck 1? "C"
:Bedingter Ausdruck 2? "A"
: "B";
Es ist viel einfacher zu sehen als der erste ternäre Operator und die if ~ else-Anweisung.
Vor kurzem benutze ich aktiv den ternären Operator. Wenn Sie einen Lambda-Ausdruck oder eine Stream-API hinzufügen, können Sie ihn mit einer relativ kleinen Anzahl von Zeilen ausdrücken, sodass ich ihn wirklich mag.
Wenn Sie jedoch während der Codeüberprüfung nur ternäre Operatoren verwenden, werden Sie gefragt: "Ist das nicht unlesbar?" Was soll ich machen ...
Recommended Posts