Präzedenz
Von der höchsten zur niedrigsten ist dies die Präzedenztabelle für Ruby. Operationen mit hoher Präzedenz finden vor Operationen mit niedriger Präzedenz statt.
!, ~, unary +
**
unary -
*, /, %
+, -
<<, >>
&
|, ^
>, >=, <, <=
<=>, ==, ===, !=, =~, !~
&&
||
.., ...
?, :
modifier-rescue
=, +=, -=, etc.
defined?
not
or, and
modifier-if, modifier-unless, modifier-while, modifier-until
{ } blocks
Unäre + und unäre - sind für +1, -1 oder -(a + b).
Modifier-if, modifier-unless usw. sind für die Modifier-Versionen dieser Schlüsselwörter. Zum Beispiel ist dies eine Modifier-unless-Anweisung
a += 1 unless a.zero?
Beachten Sie, dass (a if b rescue c) aufgrund von Gründen, die nicht mit der Präzedenz zusammenhängen, als ((a if b) rescue c) geparst wird. Siehe Modifier-Anweisungen.
{ ... }-Blöcke haben Priorität unter allen aufgeführten Operationen, aber do ... end-Blöcke haben niedrigere Priorität.
Alle anderen Wörter in der obigen Präzedenztabelle sind Schlüsselwörter.