우선순위

우선순위 (Precedence)

다음은 Ruby의 연산자 우선순위 표예요. 위에서 아래로, 우선순위가 높은 것에서 낮은 것으로 나열돼 있어요. 우선순위가 높은 연산이 낮은 연산보다 먼저 실행돼요.

!, ~, unary +

**

unary -

*, /, %

+, -

<<, >>

&

|, ^

>, >=, <, <=

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

&&

||

.., ...

?, :

modifier-rescue

=, +=, -=, etc.

defined?

not

or, and

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

{ } blocks

unary +unary -+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 statements를 보세요.

{ ... } 블록은 위에 나열된 모든 연산보다 우선순위가 낮고, do ... end 블록은 더 낮아요.

우선순위 표에서 연산자(기호)가 아닌 나머지 단어들은 모두 키워드예요.

출처: Ruby 공식 문서

더 알아보기 (Learn more)