오늘은 서브스크립트에 대해 정리해볼게요!
서브스크립트란?
-> 대괄호를 이용해서 접근가능하도록 만든 문법
Ex)
-> 배열 array[index]
-> 딕셔너리 dictionary[key]
var array = ["banana", "apple", "tomato"]
array[0] // banana
array[1] // apple
// 내부적으로 대괄호를 사용하면 어떤 값을 리턴하도록 구현이 되어 있어서 가능한 일
직접 구현해보기
class SportsData {
var datas = ["soccer", "baseball", "basketball", "tennis"]
subscript(index: Int) -> String {
get {
return datas[index]
}
set {
datas[index] = newValue
}
}
}
var sportsData = SportsData()
sportsData[0] // soccer
sportsData[0] = "swim"
sportsData[0] // swim
- 함수의 구현이 특별한 키워드인 subscript로 명명
- 메서드이기 때문에 인스턴스에 메모리 공간이 할당되어 있지 않음
- 메서드 접근 시, 인스턴스 이름으로 접근 해야함 -> instance[파라미터]
- get블록만 선언하면 읽기전용(read-only) 계산 속성이 됨 (필수 구현)
- set블록은 선택적 구현
- set블록에서 기본 파라미터 newValue가 제공됨
'iOS > Swift' 카테고리의 다른 글
| [Swift] guard와 if-let 비교해보기 (0) | 2022.12.07 |
|---|---|
| [Swift] 속성 감시자 (Property Observer) (0) | 2022.11.25 |
| [Swift] 클래스와 구조체 (Class, Struct) (0) | 2022.11.22 |
| [Swift] Optional (0) | 2022.11.17 |
| [Swift] Array (0) | 2022.11.16 |