• Feed
  • Explore
  • Ranking
/
/
    🦅 Swift

    [Swift] 인덱스 범위 체크를 Swifty하게 하는 방법

    Swiftios
    지
    지성
    2025.03.09
    ·
    3 min read

    Swift에서 컬렉션의 인덱스를 안전하게 체크하는 방법은 여러 가지가 있다. 안전한 인덱스 접근은 크래시를 방지하고 코드의 안정성을 높이는 중요한 요소이다. 이 글에서는 여러 가지 방식을 비교하여 가장 Swifty한 방식이 무엇인지 살펴보겠다.


    contains(_ :)를 활용한 범위 체크

    (0..<arr.count).contains(index)

    장점

    • 간결하고 읽기 쉬움

    • contains(_ :)를 사용하여 직관적인 표현 가능

    • 범위 연산자를 활용하여 Swift 다운 표현이 가능함

    단점

    • arr.count가 매번 평가되므로 큰 배열에서는 성능에 영향을 줄 수 있음

    ~+연산자를 활용한 범위 체크

    index ~= (0..<arr.count)

    장점

    • ~=연산자는 contains(_ :)를 대체할 수 있으며, Swift의 패턴 매칭 기능을 활용

    • - 코드가 더 짧아지고, 범위를 체크하는 목적이 명확해짐

    단점

    • ~=연산자가 일반적으로 자주 사용되지 않아 가독성이 떨어질 수 있음

    • contains(_ :)와 마찬가지로 count를 평가해야 함

    직접 비교 연산자로 체크

    index >= 0 && index < arr.count

    장점

    • 가장 명확한 표현으로 직관적

    • count를 여러번 평가하지 않으므로 성능 면에서 유리

    단점

    • 다소 기본적인 방식이라 Swifty한 느낌이 덜함

    • 가독성이 위의 두 방식보다는 떨어질 수 있음

    indices.contains(_ :)를 활용한 방법

    arr.indices.contains(index)

    장점

    • indeices 프로퍼티를 사용하여 배열의 유효한 인덱스 범위를 직접 확인

    • Siwft의 컬렉션 기능을 활용한 가장 자연스러운 방법

    • count를 직접 참조하지 않아 코드가 깔끔해짐

    단점

    • indices가 Range 형식(Range<Int>)이므로 다른 자료형에서는 호환이 어려울 수 있음







    - 컬렉션 아티클