서브스크립트의 기본형태
subscript(index: Int) -> Int {
get {
// 반환 값
}
set(newValue) {
// set 액션
}
}
- 메소드와 연산 프로퍼티 선언과 비슷하다.
- 다만 서브스크립트는 read-write와 read only만 가능하다.
- set에 대한 인자 값을 따로 지정하지 않으면 기본값으로 newValue를 사용한다.
- 읽기 전용으로 선언하고 싶다면 아래와 같이 따로 지정하지 않으면 get으로 동작한다.
subscript(index: Int) -> Int {
// 반환 값
}
- 읽기 전용 서브스크립트 예시 (TimeTable 구조체가 정수의 n배를 표시)
Dictionary에서의 서브스크립트 사용
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2
- numberOfLegs는 타입 추론을 통해 [String: Int] 타입을 가진다.
- 해당 코드는 numberOfLegs에 key는 bird를 값은 2를 넣으라는 서브스크립트 문법이다.
서브스크립트 옵션
- 서브스크립트는 입력 인자의 숫자에 제한이 없고, 입력 인자의 타입과 반환 타입의 제한도 없다.
- 다만 in-out 인자나 기본 인자값을 제공할 수는 없다.
- 오버로딩도 가능하다.
assert() 함수는 디버깅 모드에서만 동작하는 함수로, 조건의 검증을 위해 사용된다. (배포하는 어플리케이션에서는 제외, 이와 같은 역할을 하지만 실제 배포 환경에서도 동작하는 함수는 precondition()함수가 있다.)