더북(TheBook)

in/!in 연산을 지원하는 타입이 범위만 있는 것은 아니다. 문자열이나 배열처럼 다른 타입의 원소를 담는 컨테이너 종류의 타입이라면 보통 이 두 연산을 지원한다.

val numbers = intArrayOf(3, 7, 2, 1)
val text = "Hello!"
println(2 in numbers)  // true
println(9 !in numbers) // true
println(4 in numbers)  // false
println('a' in text)   // false
println('H' in text)   // true
println('h' !in text)  // true

우선순위로 보면 범위 연산인 ..는 덧셈과 중위 연산 사이에 속하며, in!in 연산은 중위와 비교 연산 사이에 속한다. 따라서 2장 코틀린 언어 기초에서 봤던 연산자 우선순위표를 다음과 같이 바꿔야 한다.

▼ 표 3-1 연산자 우선순위

덧셈

+, -

a + b..c - d // (a + b)..(c - d)

범위

..

a..b step c // (a..b) step c

a in b..c // a in (b..c)

중위

이름 붙은 중위 연산자들

a < b or b < c // (a < (b or b)) < c

a == b and b == c // (a == b) and (b == c)

a in b or a in c // (a in (b or a)) in c

원소 검사

in !in

a < b in c // a < (b in c)

a !in b > c // (a !in b) > c

비교

< > <= >=

a < b == b < c // (a < b) == (b < c)

a < b && b < c // (a < b) && (b < c)

until, downTo, step은 다른 이름 붙은 중위 연산자(and, or 등)와 우선순위가 같다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.