Subscripts에 대해서 설명하시오.

이하연·2021년 8월 15일
0

[Swift] 스위프트

목록 보기
9/27

Subscript

  • Class, Struct, Enum에서 collection, 순열, list, sequence 등 집합의 특정 멤버 요소에 쉽게 접근하기 위한 방법입니다.

  • 이것을 이용하면 추가적인 메소드없이 특정 값을 할당(set)하거나 가져(get)올 수 있습니다.

  • 인스턴스 이름 뒤에 대괄호로 감싼 값을 써줌으로써 인스턴스 내부의 특정 값에 접근할 수 있습니다.

  • getter, setter ( 접근자, 설정자 ) 메서드를 구성하지 않고도 인덱스를 통해 어떤 값을 빠르게 설정하거나 가져올 수 있습니다.

    • subscript 내부는 getter, setter의 방식을 따르기 때문

    • 읽고 쓰기 가능

      subscript(index: Int) -> Int {
          get {
              // 적절한 반환 값
          }
          set(newValue) {
              // 적절한 set 액션
          }
      }
    • 읽기 전용

      subscript(index: Int) -> Int {
          // 적절한 반환 값
      }
  • 서브스크립트를 구현하는 코드

    • 각 타입의 구현부
    • 타입의 extension 구현부
  • 사용 예시

    struct TimesTable {
        let multiplier: Int
        subscript(index: Int) -> Int {
            return multiplier * index
        }
    }
    // TimesTable구조체의 multiplier를 3으로 설정 
    let threeTimesTable = TimesTable(multiplier: 3)
    print("six times three is \(threeTimesTable[6])")
    // "six times three is 18" 출력
    • threeTimesTable[6]에서 6번째 값, 여기서는 3에 6을 곱한 값을 출력합니다

      → subscript의 set에 대한 인자값을 따로 지정하지 않으면 기본 값으로 사용되기때문

      var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
      numberOfLegs["bird"] = 2

      numberOfLegs값은 타입 추론에 의해 [String: Int]형을 갖습니다. numberOfLegs["bird"] = 2는 사전형 변수 numberOfLegs에 key로 bird를 그 값은 2를 넣으라는 서브스크립트 문법입니다.

      참고 자료

      서브스크립트 (Subscripts)

0개의 댓글