우선순위
우선순위 (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)
- 각 연산자가 무엇을 하는지, 논리 연산자가 일반 메서드와 어떻게 다른지는 연산자 (Operators) 문서를 보세요.
modifier-if같은 후치 수식 문장은 조건식 (Control Expressions) 문서에서 다뤄요.