🔥 서브스크립트 사용법
서브스크립트의 정확한 의미는 사용되는 맥락에 따라 달라져요. 보통 서브스크립트는 컬렉션, 리스트, 또는 시퀀스에서 요소에 접근하는 간편한 방법으로 사용됩니다. 여러분은 특정 클래스나 구조체의 기능에 가장 적합한 방식으로 서브스크립트를 구현할 수 있어요.
예를 들어, Swift의 Dictionary
타입은 Dictionary
인스턴스에 저장된 값을 설정하고 가져오기 위해 서브스크립트를 구현하고 있죠. 딕셔너리의 키 타입에 해당하는 키를 서브스크립트 대괄호 안에 제공하고, 딕셔너리의 값 타입에 해당하는 값을 서브스크립트에 할당하여 딕셔너리에 값을 설정할 수 있답니다.
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] // numberOfLegs의 타입은 [String: Int]로 추론됩니다. numberOfLegs["bird"] = 2 // 서브스크립트를 사용하여 딕셔너리에 새로운 키-값 쌍을 추가합니다.
swift
위 예제에서는 numberOfLegs
라는 변수를 정의하고 세 개의 키-값 쌍을 포함하는 딕셔너리 리터럴로 초기화했어요. numberOfLegs
딕셔너리의 타입은 [String: Int]
로 추론됩니다. 딕셔너리를 생성한 후, 이 예제는 서브스크립트 할당을 사용하여 "bird"
라는 String
키와 2
라는 Int
값을 딕셔너리에 추가하고 있죠.
서브스크립트를 사용한 딕셔너리 접근에 대한 더 자세한 정보는 Accessing and Modifying a Dictionary를 참고하세요.
Swift 표준 라이브러리의 컬렉션 타입 외에도 우리가 직접 정의한 타입에서 서브스크립트를 활용할 수 있어요. 예를 들어, 2차원 좌표를 표현하는 구조체에서 서브스크립트를 사용하여 x좌표와 y좌표를 설정하고 접근할 수 있겠죠.
struct Point { var x: Int = 0 var y: Int = 0 subscript(axis: String) -> Int { get { switch axis { case "x": return x case "y": return y default: return 0 } } set { switch axis { case "x": x = newValue case "y": y = newValue default: break } } } } var point = Point() point["x"] = 10 point["y"] = 20 print("Point: (\(point["x"]), \(point["y"]))") // "Point: (10, 20)" 출력
swift
이렇게 구조체 Point
에 서브스크립트를 정의하여 "x"
또는 "y"
를 입력받아 해당 좌표 값을 설정하거나 반환할 수 있답니다. 서브스크립트의 get
과 set
에서 입력된 축 문자열에 따라 알맞은 속성 값을 처리해 주고 있어요.
이처럼 꼭 컬렉션 타입이 아니더라도 인덱스나 키를 사용해 값에 접근하는 것이 자연스러운 타입이라면 서브스크립트를 적극 활용해 보는 것이 좋겠죠? 코드의 가독성도 높이고 사용의 편의성도 향상시킬 수 있습니다.