🔥 서브스크립트 사용법
서브스크립트의 정확한 의미는 사용되는 맥락에 따라 달라져요. 보통 서브스크립트는 컬렉션, 리스트, 또는 시퀀스에서 요소에 접근하는 간편한 방법으로 사용됩니다. 여러분은 특정 클래스나 구조체의 기능에 가장 적합한 방식으로 서브스크립트를 구현할 수 있어요.
예를 들어, Swift의 Dictionary 타입은 Dictionary 인스턴스에 저장된 값을 설정하고 가져오기 위해 서브스크립트를 구현하고 있죠. 딕셔너리의 키 타입에 해당하는 키를 서브스크립트 대괄호 안에 제공하고, 딕셔너리의 값 타입에 해당하는 값을 서브스크립트에 할당하여 딕셔너리에 값을 설정할 수 있답니다.
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
// numberOfLegs의 타입은 [String: Int]로 추론됩니다.
numberOfLegs["bird"] = 2
// 서브스크립트를 사용하여 딕셔너리에 새로운 키-값 쌍을 추가합니다.var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
// numberOfLegs의 타입은 [String: Int]로 추론됩니다.
numberOfLegs["bird"] = 2
// 서브스크립트를 사용하여 딕셔너리에 새로운 키-값 쌍을 추가합니다.위 예제에서는 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)" 출력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)" 출력이렇게 구조체 Point에 서브스크립트를 정의하여 "x" 또는 "y"를 입력받아 해당 좌표 값을 설정하거나 반환할 수 있답니다. 서브스크립트의 get과 set에서 입력된 축 문자열에 따라 알맞은 속성 값을 처리해 주고 있어요.
이처럼 꼭 컬렉션 타입이 아니더라도 인덱스나 키를 사용해 값에 접근하는 것이 자연스러운 타입이라면 서브스크립트를 적극 활용해 보는 것이 좋겠죠? 코드의 가독성도 높이고 사용의 편의성도 향상시킬 수 있습니다.










