Swift: Subscript / 서브스크립트

Wooyo·2023년 10월 25일
0
post-thumbnail

참고 사이트 : https://babbab2.tistory.com/123

1. 서브스크립트

  • 클래스 / 구조체 / 열거형에서 시퀀스의 멤버 요소에 접근하기 위한 바로가기 첨자

2. 배열의 예

  • 예로 배열을 사용하면서 원소에 값을 접근하는 경우
let numbers: [Int] = [1, 2, 3, 4]
numbers[0] // 1
  • numbers 배열의 첫 번째 요소인 1에 접근하기 위해 numbers[0]과 같이 대괄호를 사용하여 접근
  • []과 같은 대괄호가 서브스크립트라고 할 수 있다
@inlinable public subscript(index: Int) -> Element

3. Dictionary의 예

  • 아래의 dictionary에서 값에 접근하는 경우
let dict: [String: Int] = ["one": 1, "two": 2]

dict["one"] // 1
  • dictionary의 값에 접근하기 위한 [] 또한 서브스크립트
@inlinable public subscript(key: Key) -> Value?

4. 서브스크립트 정의방법

  • subscript 키워드로 작성하며 하나 이상의 파라미터 및 반환 값을 지정
  • getter / setter 모두 구현 가능
  • 파라미터 / 리턴형 생략 불가
  • get - only는 가능하지만 set - only는 불가
subscript(index: Int) -> Int {
	get {}
    set(newValue) {}
}

5. 서브스크립트 정의하기

  • Javasript에서는 String 타입도 배열처럼 index로 접근이 가능
  • 스위프트에서는 에러가 발생
  • 위와 같이 서브스크립트를 재정의 해보기
extension String {
	subscript(index: Int) -> String? {
    	guard (0.. < count).contains(index) else {
        	return nil
        }
        let targetStringIndex = index(startIndex, offsetBy: Index)
        
        return String(self[targetStringIndex])
    }
}

let jimin = "Jimin"

jimin[0] / J
jimin[100] // nil
profile
Wooyo의 개발 블로그

0개의 댓글