Warum nicht Java haben zusammengesetzte Zuweisung Versionen der bedingten und bedingten und oder-Operatoren? (&&=, ||=)

Also für binäre Operatoren auf Boolean, Java hat &, |, ^, && und ||.

Lassen Sie uns zusammenfassen, was Sie tun, hier kurz:

Für & das Ergebnis Wert ist true wenn beide Operanden Werte sind true; andernfalls ist das Ergebnis false.

Für | das Ergebnis Wert ist false wenn beide Operanden Werte sind false; andernfalls ist das Ergebnis true.

Für ^ das Ergebnis Wert ist true wenn die Operanden-Werte unterschiedlich sind; andernfalls ist das Ergebnis false.

Den && Betreiber ist wie & aber wertet seinen rechten Operanden nur dann, wenn der Wert seines linken Operanden ist true.

Den || Betreiber ist wie |, aber wertet seinen rechten Operanden nur dann, wenn der Wert seines linken Operanden ist false.

Nun, unter all 5, 3 von denen haben zusammengesetzte Zuweisung Versionen, nämlich |=, &= und ^=. Also meine Frage ist offensichtlich: warum nicht Java stellen &&= und ||=? Ich finde, dass ich brauche, mehr als ich brauche &= und |=.

Und ich glaube nicht, dass "weil es zu lange" ist eine gute Antwort, denn Java hat >>>=. Es muss einen besseren Grund für diese Unterlassung.


Vom 15.26 Zuweisungsoperatoren:

Gibt es 12 Zuweisungsoperatoren; [...] = *= /= %= += -= <<= >>= >>>= &= ^= |=


Einen Kommentar gemacht wurde, dass, wenn &&= und ||= umgesetzt wurden, dann wäre es das einzige Unternehmen, das nicht auswerten der rechten Seite zuerst. Ich glaube, diese Vorstellung, dass eine zusammengesetzte Zuweisung-operator wertet der rechten Seite die erste ist ein Fehler.

Vom 15.26.2 Zusammengesetzte Zuweisungsoperatoren:

Eine zusammengesetzte Zuweisung Ausdruck der form E1 op= E2 entspricht E1 = (T)((E1) op (E2)), wo T ist die Art der E1, außer dass E1 wird nur einmal ausgewertet.

Als Beweis der folgende Abschnitt wirft einen NullPointerException, nicht ein ArrayIndexOutOfBoundsException.

    int[] a = null;
    int[] b = {};
    a[0] += b[-1];
Ich gehe für die zweite, niemand interessiert 😛 auch, alle diese Frage nach dem 'warum feature x ist nicht in Sprache y?' gefragt werden sollte, um die Sprache der Designer, nicht zu uns 😛
Was bedeutet &= bedeuten ? Jemand kann bitte mir sagen ?
mögliche Duplikate von Warum muss ein "&&=" - Operator nicht vorhanden ist?
Diese Frage ist schon etwas älter, aber das hat mehr Stimmen und eingehende links. Ich würde sagen, wenn es einen merge, merge die alte diese (ja, das kann getan werden).
Es ist fest in Scala.

InformationsquelleAutor polygenelubricants | 2010-02-24

Schreibe einen Kommentar