범위 연산자(Range Operator)
반복할 범위를 표현하거나, 배열에서 특정부분을 추출할 때 주로 사용된다.
Closed Range Operator
첫번째 유형
lowerBound ... upperBound
이항연산자로 구성되어있다.
시작 위치와 종료 위치가 정해져있다.
1 ... 10 //오름차순. 문제없음
10 ... 1 //내림차순으로 작성하는 것은 불가능하다.
lowerBound는 upperBound와 반드시 작거나 같아야 한다.
만약 내림차순의 범위가 필요하다면 어떻게 해야할까?
(1 ... 10).reversed()
이렇게 하면 내림차순의 범위가 만들어진다.
두번째 유형
lowerBound...
후치연산자로 구성되어있다.
시작 위치는 정해져있지만, 종료 범위는 정해져있지 않다.
종료 위치는 해당 연산자를 실제로 사용할 때 코드에 따라서 정해진다.
배열처럼 정해전 범위에서 사용한다면, 마지막 위치가 upperBound가 될 것이고,
반복문에서 사용한다면 upperBound는 무한대가 될 것이다.
세번째 유형
...upperBound
전치연산자로 구성되어있다.
시작 위치는 두번째 처럼 연산자가 사용되는 코드에 따라 다르겠지만, 종료 위치는 정해져있다.
예시를 보자
for num in 1 ... 10 {
print(num)
}
이런식으로 1부터 10까지 출력된다.
Half-Open Range Operator
lowerBound ..< upperBound
..<upperBound
기본적인 특징은 Closed Range Operator와 같다.
하지만 다른 점이 두가지 있는데,
1. upperBound가 Range에 포함되지 않는다. (..<)
2. 단항연산자로 사용할때는 전치연산자로만 사용할 수 있다.(..<upperBound)
예시를 보자
for num in 1 ..< 10 {
print(num)
}
upperBound인 10이 포함되지 않기 때문에, 1부터 9까지만 출력된다.
First-class Citizen
Swift는 범위도 하나의 값으로 인식하기 때문에,
상수나 변수에 범위를 저장할 수도 있다.
파라미터로 전달할 수 있다.
함수에서 리턴할 수 있다.
이런 요소들을 First-class Citizen이라고 한다.
let range = ...5
range.contains(3) //true
이런식으로 상수에 저장할 수 있고,
contains를 사용해서, 범위에 포함이 되어있는지 확인할 수도 있다.
'Language > Swift' 카테고리의 다른 글
Swift 기본 문법 - Tuple (0) | 2024.10.28 |
---|---|
Swift 기본 분법 - 반복문 (for문, while문) (0) | 2024.10.20 |
Swfit 기본 문법 - 조건문 switch문 (0) | 2024.10.19 |
Swift 기본 문법 - 조건문 guard문 (0) | 2024.10.15 |
Swift 기본 문법 - 조건문 if문 (2) | 2024.10.14 |
살아남는 iOS 개발자가 되기 위해 끊임없이 노력하고 있습니다.