드디어 기본 연산자 마지막 편이다.

범위연산자가 이전에 한번 잠깐 다룬적이 있다.

 

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의 부분을 추출하거나 부분 속성을 변경해줄때만 사용해보고 그외엔 없다.

 

+ Recent posts