본문 바로가기

[Swift 5.1] Static Subscript (SE-0254)

기술적인 이야기/애플 플랫폼 개발 2019. 10. 31.
반응형

이 글은 Swift 5.1에 제안된 SE-0254 Static and class subscripts 업데이트를 살펴보는 글입니다.

결론부터 말해서 이제 subscript를 static 하게 쓸 수 있습니다. 이번에도 다짜고짜 예제로 살펴봅시다.

struct HTTPStatus {
    private static var map = [Int: String]()

    static subscript(_ code: Int) -> String? {
        get {
            map[code]
        }
        set {
            map[code] = newValue
        }
    }
}

위 예제에서 subscriptstatic으로 선언되어 있습니다. 따라서 이제 인스턴스화 시키지 않고도 아래처럼 접근할 수 있습니다.

HTTPStatus[200] = "Ok"
HTTPStatus[404] = "Not Found"
HTTPStatus[500] = "Internal Server Error"

print(HTTPStatus[404])    //Not Found

이 예제처럼 쓸 바에는 그냥 사전형 타입을 그대로 쓰는 게 편하겠지요. 당연하게도 static subscript의 능력을 알아보기 위한 억지로(?) 만든 예제였습니다. 어쨌든 subscript의 능력은 무궁무진하니 알아두면 좋을 것 같습니다.

728x90
반응형

댓글