优先级

从最高到最低,这是 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-unless 语句

a += 1 unless a.zero?

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

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

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