[스위프트 기본] 9. 범위 연산자
드디어 기본 연산자 마지막 편이다.
범위연산자가 이전에 한번 잠깐 다룬적이 있다.
Closed Range Operator( 폐쇄 범위 연산자)
범위연산자는 말그대로 범위를 정의하는 연산이다
이전에 for 문을 적을때 아래와같은 형태로 적었는데
for i in 0 ... 10 {
}
0 ... 10 이 부분이 범위 연사자를 사용한 부분이다.
0이상 10이하를 지정한것인데 for 문은 이러한 범위에서 순서대로 0, 1, 2 가져오며 반복한다는 의미이다.
0 ... 10 이러한 범위 연산자를 폐쇄 범위 연사자라 하며
양 끝이 정해져있다 하여 폐쇄 이다.
그럼 양끝이 정해져있지 않은것도 있다.
Half-Open Range Operator
한글로 뭐라고 번역해야 할지 모르겠다.
위의 폐쇄 범위 연산자와 유사한데
맨 뒤 끝 이전까지 범위를 지정한 것을 일컫는다.
0 ..< 10 이렇게하면 0이상 10미만이다. 점이 이번엔 두개다 중요한 부분이다.
One-sided Ranges( 단측 범위 연산자 )
이번엔 양 끝중 한쪽만 범위를 지정한 것이다.
이미 있는 배열에 대해 범위를 지정할때 이미 양끝이 정해져 있기에 한쪽만 지정해줘서 편하게 사용한다.
위의 폐쇄, 하프오픈 범위 연산자랑 비슷하다.
ex1)
let alphabet = ["A","B","C","D","E"]
for c in alphabet[...2] {
print(c)
}
print()
for c in alphabet[..<2] {
print(c)
}
print()
for c in alphabet[2...] {
print(c)
}
print()
결과:
A
B
C
A
B
C
D
E
첫번째 for문은 alphabet 배열의 처음부터 인덱스2, 그러니까 처음부터 세번째까지 범위를 지정하여
print문에서 A B C가 출력된것이다.
두번째 for문은 alphabet 배열의 처음부터 인덱스2이전까지, 그러니까 처음부터 두번째까지 범위를 지정하여
print문에서 A B가 출력된다.
세번째 for문은 인덱스 2 부터(세번째 부터) 끝까지 범위를 지정하여
print문에서 C D E가 출력되었다
단 2초과에 해당하는 <.. 은 없다
스위프트에는 사용자가 직접 연산자를 지정할 수 있는데 만약 필요하다면 지정해서 사용하면 된다.
이것 외에도 따로 range를 생성해서 지정해줄수 있다.
해당 부분에 대해 알고 싶다면 Range, NSRange에 대해 검색해봄이 좋을듯하다.
난 따로 생성해서 지정할땐 String의 부분을 추출하거나 부분 속성을 변경해줄때만 사용해보고 그외엔 없다.