Einige Informationsquelle über Operatorpräzedenz Beispiel sagt, dass unäre Operatoren wie !
, ~
, +
, -
haben eine höhere Priorität als die Zuordnung =
. Folgende Ausdrücke sind jedoch möglich:
Unter Berücksichtigung dieser Ergebnisse ist die einzig mögliche Erklärung, die ich mir vorstellen kann, dass diese unären Operatoren einen niedrigeren Vorrang haben als die Zuweisung. Wenn dies der Fall ist, würde das bedeuten, dass die oben genannten Informationen falsch sind. Welches ist richtig? Gibt es eine andere Erklärung?
Mein Programming Ruby Book (2. Ausgabe) listet auch unäre Operatoren auf, die eine höhere Priorität als die Zuweisung haben.
Der unäre Operator erhält die höchste Priorität. Der Grund für die Linie als ~ (a = 1) analysiert wird, weil die Zersetzung der Linie in gültige Syntax höhere Priorität als alles andere, auch mit der einfachen Variable ‚a‘ als Ausdruck der unären Operator arbeitet auf.
Wenn die Ruby-Parser etwas gültig von dem Rest der Linie gemacht hätten, wäre es verwendet hat (~ a), aber es gibt keine gültige Regel als Streichhölzer = etwas ist, nur lvalue ‚=‘ R-Wert.
Sie können "gültige Syntax" als oberste Priorität betrachten, dann einfache Werte, konstante und variable Namen und dann die Standardoperatoren darunter.
Tags und Links ruby variable-assignment operator-precedence unary-operator