단어 그대로 범위를 표현하는 연산자이다. 이 연산자는 반복문을 작성할 때 많이 쓰인다.
//closed range operator
a...b //a부터b까지 (b 포함)
(a...b).reversed() //a부터 b까지의 역순
a... //a부터 끝까지
...a //처음부터 a까지 (a 포함)
//half-opern range operator
a..<b //a부터 b이전까지 (b 포함x)
..<a //처음부터 a이전까지 (a 포함x)
이런식으로 범위의 끝 부분을 포함하느냐 마느냐에 따라 표기법이 바뀐다. 우선 끝을 포함하는 closed range operator의 활용 예시부터 살펴보자.
var total = 0
for num in 1...10{
total += num
}
print(sum) //55
for 반복문에 범위 연산자를 활용해 10번 반복하는동안 1부터 10까지 더하도록 하는 예시이다.
let alphabet = ["A","B","C","D","E"]
print(alphabet[2...]) //["C", "D", "E"]
print(alphabet[...2]) //["A", "B", "C"]
이번엔 배열에 활용해보았는데, 인덱스 2 부터 끝 인덱스까지를 출력하는 두번째 줄 코드는 C부터 끝인 E까지 출력이 되고, 처음부터 인덱스 2 까지 출력하는 세번째 줄 코드는 첫번째인 A부터 인덱스 2인 C까지 결과로 나오는 모습이다.
이제 half-opern range operator의 사용 예시를 보겠다.
total = 0
for num in 1..<10{
sum += num
}
print(sum) //45
print(array[..<2]) //["A", "B"]
끝 부분을 포함하지 않기 때문에 마지막에 10이 더해지지 않고 9까지만 더해진 45가, 그 아래는 인덱스 2는 포함하지 않기때문에 인덱스 1인 B까지만 출력이 되는 결과가 나타나게 된다.
let range 0...10
range.contains(11) //false
추가적으로, 이런식으로 contains를 이용해 해당 범위에 포함이 되는지도 확인할 수 있으니 참고해 두자.