Ich versuche, einmal zu vereinfachen und für alle, eine gemeinsame Bedingung:java ternärer Operator und lazy evaluation
public static void main(String[] args)
{
boolean a = true;
boolean b = false;
boolean c = true;
boolean t1 = (a && b) || (!a && c);
boolean t2 = a ? b : c;
System.out.println(t1);
System.out.println(t2);
}
wo offensichtlich t1
und t2
gleichwertig ist.
Gibt es eine Möglichkeit, die Bedingung mit Operatorrangfolge auszudrücken, ohne den ternären Operator zu verwenden und a
nur einmal auszuwerten?
Dank
reale Welt Beispiel:
if(execution.isActive() ? !Objects.equals(sourceStep, currentStep) : sourceStep != null)
{
throw new IllegalStateException("current action is not allowed to be executed");
}
wo execution.isActive()
eine teuere Operation ist.
Für meinen Geschmack ist dies überhaupt nicht lesbar ... Ich muss aufhören und denke, es ist nicht sofort.
Meine Frage ist über Lesbarkeit vs Effizienz.
Warum nicht den ternären Operator verwenden? Es ist einfacher als der andere Ausdruck und auch einfacher als eine if-Anweisung. – Eran
Ist das Hausaufgaben? – Kayaman
@Eran, weil es schwierig zu lesen ist, tendiere ich dazu, ternäre Operatoren zu vermeiden, wenn möglich –