优先级

从最高到最低,这是 ruby 的优先级表。高优先级操作在低优先级操作之前发生。

!, ~, unary +

**

unary -

*, /, %

+, -

<<, >>

&

|, ^

>, >=, <, <=

<=>, ==, ===, !=, =~, !~

&&

||

.., ...

?, :

modifier-rescue

=, +=, -=, etc.

defined?

not

or, and

modifier-if, modifier-unless, modifier-while, modifier-until

{ } blocks

一元 + 和一元 - 用于 +1-1-(a + b)

Modifier-if、modifier-unless 等用于这些关键字的 modifier 版本。例如,这是一个 modifier-unless 语句

a += 1 unless a.zero?

请注意,(a if b rescue c) 解析为 ((a if b) rescue c),原因与优先级无关。请参阅modifier 语句

{ ... } 块的优先级低于所有列出的操作,但 do ... end 块的优先级较低。

上述优先级表中的所有其他单词都是关键字。