優先順序

由高到低,這是 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),原因與優先順序無關。請參閱 修改器陳述式

{ ... } 區塊的優先順序低於所有列出的運算,但 do ... end 區塊的優先順序較低。

優先順序表格中所有其他字詞都是關鍵字。