오늘의 Swift 상식 (Subscript)

장국진
2 min readJul 3, 2019

--

서브스크립트란?

콜렉션, 리스트, 시퀀스 등 집합의 특정 member elements에 간단하게 접근할 수 있는 문법

추가적인 메소드 없이 특정 값을 할당하거나 가져올 수 있다.

Ex.) array[index]로 배열의 인스턴스 항목과 dictionary[key]로 딕셔너리 인스턴스 항목에 접근하는 것

서브스크립트의 기본형태

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()함수가 있다.)

--

--