优先级

从最高到最低,这是 Ruby 的优先级表。高优先级的操作在低优先级的操作之前执行。

!, ~, unary +

**

unary -

*, /, %

+, -

<<, >>

&

|, ^

>, >=, <, <=

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

&&

||

.., ...

?, :

modifier-rescue

=, +=, -=, etc.

defined?

not

or, and

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

{ } blocks

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

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

a += 1 unless a.zero?

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

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

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