← 글 목록

notes

IOS - 범위 연산자

Swift 범위 연산자 ...·..<의 동작과 컬렉션·반복문 활용 메모.

Swift 범위 연산자 정리

1. 닫힌 범위 연산자 (a...b)

  • 설명: a부터 b까지 모두 포함하는 범위
  • 타입: ClosedRange
  • 예시:
    for i in 1...5 {
        print(i) // 1, 2, 3, 4, 5
    }
    let range = 1...5 // 1, 2, 3, 4, 5
    

2. 반닫힌 범위 연산자 (a..<b)

  • 설명: a부터 b 직전까지 (b는 포함하지 않음)
  • 타입: Range
  • 예시:
    for i in 1..<5 {
        print(i) // 1, 2, 3, 4
    }
    let range = 1..<5 // 1, 2, 3, 4
    

3. 일방향 범위 연산자

a) Partial Range Through (...b)

  • 설명: 시작값 없이 b까지 포함
  • 타입: PartialRangeThrough
  • 예시:
    let range = ...5 // ...5 (음의 무한대 ~ 5)
    range.contains(3) // true
    range.contains(6) // false
    

b) Partial Range From (a...)

  • 설명: a부터 끝까지
  • 타입: PartialRangeFrom
  • 예시:
    let range = 3... // 3 ~ 무한대
    range.contains(100) // true
    range.contains(2) // false
    

c) Partial Range Up To (..<b)

  • 설명: 시작값 없이 b 직전까지
  • 타입: PartialRangeUpTo
  • 예시:
    let range = ..<5 // 음의 무한대 ~ 4
    range.contains(4) // true
    range.contains(5) // false
    

4. 패턴 매칭 연산자 (~=)

  • 설명: 값이 범위에 포함되는지 확인할 때 사용
  • 예시:
    let range = 1...5
    print(range ~= 3) // true (3이 1...5에 포함)
    print(range ~= 7) // false
    

5. 배열 슬라이싱에서의 사용

let arr = [10, 20, 30, 40, 50]
let slice1 = arr[1...3]   // [20, 30, 40]
let slice2 = arr[..<3]    // [10, 20, 30]
let slice3 = arr[2...]    // [30, 40, 50]

6. 정리 표

배열 인덱스는 거의 ..< (끝 미포함)로 잡고, ...는 “양끝 포함 루프”일 때. 헷갈리면 표만 보면 된다.