[JAVA] Eine verwirrte Geschichte über einen ternären Operator mit mehreren bedingten Ausdrücken

Code in Frage

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.

Ich setze Klammern, um das Sehen zu erleichtern

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.

Ich habe versucht, es so umzuschreiben, als ob ~ else-Anweisung

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.

Ich habe versucht, das Anzeigen durch Einfügen eines Zeilenumbruchs zu vereinfachen

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 ...

Ich habe versucht, den bedingten Zweig neu zu schreiben

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.

Verschiedene Gefühle

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

Eine verwirrte Geschichte über einen ternären Operator mit mehreren bedingten Ausdrücken
Zuordnung zu mehreren Variablen mit dem ternären Operator
Über den ternären Operator
[PHP] Geschichte der Ausgabe von PDF mit TCPDF + FPDI
Eine Geschichte über den Versuch, mit Mockito auszukommen
Eine Geschichte über die Reduzierung des Speicherverbrauchs auf 1/100 mit find_in_batches
Eine Geschichte über die Entwicklung von ROS namens Rosjava mit Java
Eine Geschichte, die bei NotSerializableException steckt
[Hinweis] Eine Geschichte über das Ändern von Java-Build-Tools mit VS-Code
Eine Geschichte über das Erreichen der League Of Legends-API mit JAVA
Eine Geschichte über die Schwierigkeit, ein Testframework an Java 6 auszurichten
Kotlin hat keinen ternären Operator (bedingter Operator)
Eine kleine süchtig machende Geschichte mit def initialize