Subscript
정의: 클래스, 구조체, 열거형에서 시퀀스의 멤버 요소에 접근하기 위한 바로가기 첨자로, 단일 타입에 여러 서브스크립트를 정의할 수 있다.
시퀀스 요소에 접근하기 위한 바로가기 첨자는 어찌 이해는 하겄는데 단일 타입에 여러 서브 스크립트.. 뭐 이니셜라이저 여러개 쓰는 것처럼 쓸 수 있다 이 말인가?
근데 의외로 간단하더라
우린 항상 Subscript를 사용해왔다.
위 코드는 Array의 서브 스크립트인데, 이걸 어떻게 사용해 왔느냐면은
let city: [String] = ["Seoul", "Bucheon", "Busan", "Incheon"]
print(city[1]) // 서브 스크립트 ( '[]' )
파라미터로 인덱스(Int)를 받아 배열의 요소를 반환하는 형태이다.
딕셔너리도 있다.
얘는.. 딕셔너리에 키를 넣으면 값이 튀어나오는데, 그 형태이다.
예를 들면..
let housePriceOfCity: [String: Int] = ["Seoul" : 30, "Bucheon" : 5, "Busan" : 5, "Incheon" : 10]
print(housePriceOfCity["Seoul"] // 30
난 서울 안살란다
Subscript 정의
- 파라미터와 리턴값을 생략할 수 없고 필수적으로 해야한다.
- getter, setter 구현 가능
- read-only, read-write 가능 write-only 불가능
연산프로퍼티랑 비슷하다.
getter, setter는.. 간단하게 설명하자면 해당 변수의 값을 불러와서 쓸 때는 getter, 변수에 값을 할당할 때는 setter
예제
struct HousePrice {
var HousePriceOfCity = ["Seoul" : 30, "Bucheon" : 5, "Busan" : 5, "Incheon" : 10]
subscript(key: String) -> Int? {
get {
return HousePriceOfCity[key]
}
set {
HousePriceOfCity[key] = newValue
}
}
}
var housePrice = HousePrice()
housePrice.HousePriceOfCity["Bucheon"] // 5 (getter)
housePrice.HousePriceOfCity["Seoul"] = 40 // (setter)
housePrice.HousePriceOfCity["Seoul"] // 40
서울 집값이 더 올랐댄다 미친
'iOS > Swift' 카테고리의 다른 글
Swift) Main.sync 외 않됌? (1) | 2022.02.13 |
---|---|
[Swift] 배열 안전하게 조회 (0) | 2022.02.13 |
Swift) Dynamic Type, Accessibility Inspector (0) | 2022.02.13 |
Swift) 문자열의 특정 범위의 속성을 변경해보자 NSMutableAttributedString (0) | 2022.02.13 |
Swift) Codable, Decode, Encode (0) | 2022.02.13 |
댓글