iOS/Swift

[Swift] 서브스크립트 (Subscripts)

듀니듀니 2022. 11. 25. 15:08

오늘은 서브스크립트에 대해 정리해볼게요!

 

서브스크립트란?

-> 대괄호를 이용해서 접근가능하도록 만든 문법

 

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