[Swift] Subscript 이해하기

2024. 12. 30. 21:52·Apple/Swift
목차
  1. 서브스크립트(Subscript)란?
  2. Subscript의 기본 문법
  3. Read-only Subscript 예제
  4. Subscript 특징
  5. Type Subscript
  6. Subscript 장점
728x90
반응형

안녕하세요! 피피아노입니다 🎵

 

이번 포스팅에서는 Swift의 서브스크립트(Subscript)에 대해서 정리해보려고 합니다!

 

어렵지 않은 개념이니 간단하게 정리해보겠습니다.

 

그럼 바로 시작하겠습니다!

 

서브스크립트(Subscript)란?

먼저 애플 개발자 문서에 나와 있는 내용부터 살펴보고 가겠습니다.

Accesses the element at the specified position.
지정된 위치의 요소에 액세스합니다.

(간단한 개념이라 그런지 설명도 너무 간단한 느낌...)

 

정리를 해보자면 서브스크립트는 컬렉션, 리스트, 시퀀스 등의 멤버 요소에 간단하게 접근할 수 있도록 해주는 문법입니다. 서브스크립트는 클래스, 구조체, 열거형에서 정의해서 사용할 수 있습니다.

 

배열의 array[index]나 딕셔너리의 dictionarty[key]와 같은 표현이 바로 서브스크립트를 사용한 예입니다. 생각보다 아무렇지도 않게 사용하고 있던 문법이죠?

 

 서브스크립트를 사용하면 특정한 메소드 없이 값을 가져오거나 할당하는 것이 가능해져서 코드가 더 간결해지게 됩니다.

 

Subscript의 기본 문법

서브스크립트의 문법은 인스턴스 메소드와 computed property의 문법과 유사합니다.

 

서브스크립트의 기본 문법은 아래처럼 작성할 수 있습니다.

subscript(index: Int) -> Int {
    get {
        // 적절한 subscript 값을 반환
    }
    set(newValue) {
        // 적절한 설정 작업 수행
    }
}
  • setter에서 newValue의 타입은 반환 타입과 동일
  • 파라미터나 리턴형은 생략 불가능
  • computed property처럼 get 키워드만 사용하면 read-only subscript가 됨
  • get 키워드를 생략하고 단일 표현식으로도 read-only subscript를 구현 가능

 

Read-only Subscript 예제

struct TimesTable {
    let multiplier: Int
    subscript(index: Int) -> Int {
        return multiplier * index
    }
}

let threeTimesTable = TimesTable(multiplier: 3)
print("six times three is \(threeTimesTable[6])")
// 출력: "six times three is 18"

 

Subscript 특징

서브스크립트는 다음과 특징을 가지고 있습니다.

  1. 입력 인자의 수, 타입, 반환 타입에 제한이 없다.
  2. 파라미터에 기본 값을 지정할 수 있다.
  3. 오버로딩이 가능하다.
  4. in-out 파라미터는 사용이 불가능하다.

Type Subscript

Swift 4.0부터는 타입 자체에 대한 서브스크립트를 정의할 수 있게 되었습니다.

enum Planet: Int {
    case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
    
    static subscript(planetNumber: Int) -> Planet? {
        return Planet(rawValue: planetNumber)
    }
}

// 사용 예
let mars = Planet[4] // mars

 

이렇게 작성할 수 있습니다.

 

만약에 오버라이딩 가능하다면 class로 선언하고 불가능 하다면 위에처럼 static으로 선언해주면 됩니다.

 

Subscript 장점

서브스크립트를 사용하면 배열이나 딕셔너리 같은 표준 컬렉션 타입의 동작을 모방할 수 있고 커스텀 타입에 대해 더 직관적인 문법을 제공할 수 있습니다. 그리고 복잡한 데이터 구조에 쉽게 접근하고 타입 안전성을 유지하면서도 유연한 인터페이스를 제공할 수 있다는 장점이 있습니다.

 

오늘은 여기까지 :)


감사합니다.

 

잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'Apple > Swift' 카테고리의 다른 글

[Swift] 의존성 주입(Dependency Injection)이란?  (0) 2025.04.18
[Swift] Combine에서 map과 flatMap 살펴보기  (2) 2025.04.08
[Swift] Actor 이해하기 (2/2)  (4) 2024.12.15
[Swift] 두 정수 사이의 합  (4) 2024.12.05
[Swift] 삼총사 문제 풀이 및 회고  (6) 2024.11.30
  1. 서브스크립트(Subscript)란?
  2. Subscript의 기본 문법
  3. Read-only Subscript 예제
  4. Subscript 특징
  5. Type Subscript
  6. Subscript 장점
'Apple/Swift' 카테고리의 다른 글
  • [Swift] 의존성 주입(Dependency Injection)이란?
  • [Swift] Combine에서 map과 flatMap 살펴보기
  • [Swift] Actor 이해하기 (2/2)
  • [Swift] 두 정수 사이의 합
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록

P_Piano님의
글이 좋았다면 응원을 보내주세요!

응원하기
응원은 창작의 힘

이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.

카카오 계정으로 누구나

응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.

응원 댓글 강조

글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.

쉬운 결제

응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.

응원 수익은 창작자에게 큰 힘이 됩니다.
응원 금액
응원 댓글
  • 창작 활동에 대한 감사와 격려의 의미로 창작자를 응원합니다.
  • '응원하기'는 자발적 결제이므로 청약철회(환불) 불가능합니다.
  • '응원하기'는 만 14세 이상 인증 사용자만 이용할 수 있습니다. 만 19세 미만 미성년 회원의 경우, 법정대리인이 응원하기 결제 이용에 동의하지 않으면 미성년자 본인 또는 법정대리인이 그 결제 내용을 취소할 수 있습니다.
  • '응원하기' 이용을 위한 자세한 내용은 티스토리 이용약관 및 카카오 유료서비스 이용약관을 따릅니다.
(주) 카카오 대표이사 정신아
사업자 등록 번호 120-81-47521
통신판매업신고번호 제2015-제주아라-0032호
주소 제주특별자치도 제주시 첨단로 242(영평동)
호스팅사업자 (주)카카오
고객센터 1577-3754
이메일 help.notice@kakaocorp.com
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (201)
      • Apple (119)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (20)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    swiftUI
    UIKit
    제어문
    함수
    Optional
    티스토리챌린지
    배열
    코딩테스트
    Xcode
    스위프트
    연산자
    combine
    Initializers
    옵셔널
    ios
    자바스크립트
    메서드
    변수
    네트워크
    클래스
    이니셜라이저
    프로퍼티 래퍼
    Vision Pro
    오블완
    비동기
    프로세스
    디자인패턴
    SWIFT
    visionOS
    운영체제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Swift] Subscript 이해하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.