320x100
728x90
📌 서브 스크립트(Subscripts)
클래스. 구조체, 열거형이 collection, list, sequence의 멤버 요소에 접근할 수 있는 단축키이다.
별도의 메소드 없이 인덱스로 값을 설정하고 조회하기 위해 서브스크립트 사용
someArray[index] -> Array 인스턴스 요소에 접근
someDictionary[key] -> Dictionary 인스턴스에 접근
1️⃣ 서브 스크립트 구문
인스턴스 이름 뒤 대괄호에 하나 이상의 값을 작성하여 타입의 인스턴스를 조회 가능하다.
읽기-쓰기 혹은 읽기 전용이 될 수 있음
getter와 setter를 통해 동작
subscript(index: Int) -> Int {
get {
// Return an appropriate subscript value here.
}
set(newValue) {
// Perform a suitable setting action here.
}
}
정수의 n-배-테이블을 표시하기 위한 TimesTable 구조체이다.
인덱스가 하나 증가할수록, n배 곱한 값을 반환한다.
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int {
return multiplier * index
}
}
사용해보자. 3배 테이블을 생성하기 위한 threeTimesTable 상수에 인스턴스를 생성한다.
6번째 인덱스에는 3 * 6 = 18 값이 들어 있다.
let threeTimesTable = TimesTable(multiplier: 3)
print("six times three is \(threeTimesTable[6])")
// Prints "six times three is 18"
2️⃣ 서브 스크립트 옵션
- 여러개의 입력 파라미터 가질 수 있음
- 입력 파라미터는 어떤 타입이든 가능
- 또한 어떤 타입도 반환 가능
✅ 타입 서브 스크립트
타입 메서드와 동일하게 subscript 앞에 static 키워드 혹은 클래스 일 때는 class 키워드와 함께 사용 가능하다.
enum Planet: Int {
case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
static subscript(n: Int) -> Planet {
return Planet(rawValue: n)!
}
}
let mars = Planet[4]
print(mars)
//mars 출력
728x90
반응형
'IOS > Swift' 카테고리의 다른 글
[IOS/Swift] No 스토리보드 환경 구축하기(Xcode 14) (0) | 2023.04.04 |
---|---|
[Swift] UIProgressView와 AVAudioPlayer를 활용한 타이머 구현 (0) | 2023.03.12 |
[Swift] 메서드(Methods) (0) | 2023.02.13 |
[Swift] 구조체와 클래스의 프로퍼티(Properties) (0) | 2023.02.13 |
[Swift] 구조체와 클래스(Structures and Classes) (0) | 2023.02.08 |