728x90
반응형
야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다.
서브스크립트 (subscript)
- 클래스, 구조체, 열거형에서 컬렉션, 리스트, 시퀀스 등 타입의 요소에 접근하는 단축 문법
- 별도의 설정자 또는 접근자 등의 메서드를 구현하지 않아도 인덱스를 통해 값을 설정하거나 가져올 수 있음
- 여러개의 서브스크립트를 구현할 수 있고 외부에서 사용할 때는 전달한 값의 타입을 유추하여 적절한 서브스크립트를 선택하여 실행 (→ 서브스크립트 중복 정의)
- 타입에 따라 여러 매개변수를 가질 수 있음, 입출력 매개변수는 가질 수 없음
문법
- 인스턴스 이름 뒤에 대괄호로 감싼 값을 써서 인스턴스 내부의 특정 값에 접근
subscript
키워드를 사용하여 정의
subscript(index: Int) -> Int {
get {
// 적절한 서브스크립트 결괏값 반환
}
set {
// 적절한 설정자 역할 수행
}
}
예제 1
// 예제 1 struct Student { var name: String var number: Int } class School { var number: Int = 0 var students: [Student] = [Student]() func addStudent(name: String) { let student = Student(name: name, number: self.number) self.students.append(student) self.number += 1 } func addStudents(names: String...) { for name in names { self.addStudent(name: name) } } subscript(index: Int = 0) -> Student? { if index < self.number { return self.students[index] } return nil } } let highSchool = School() highSchool.addStudents(names: "Mijeong", "juhyun", "jiyoung", "seonguk", "moonduk") let aStudent: Student? = highSchool[1] print("\(aStudent?.number) \(aStudent?.name)") // Optional(1) Optional("juhyun") print(highSchool[]?.name) // Optional("Mijeong")
타입
- 타입 자체에서 사용할 수 있는 서브스크립트,
static
키워드를 붙인다, 클래스의 경우class
키워드를 사용할 수도 있다
반응형
'Programming > Swift' 카테고리의 다른 글
RxSwift _ subscribe, bind, driver 차이 (0) | 2022.03.11 |
---|---|
[Swift] 문법 다시보기 - 맵, 필터, 리듀스 (map, filter, reduce) (0) | 2021.10.15 |
[Swift] 문법 다시보기 - 클로저(closure) (0) | 2021.10.14 |
[Swift] 문법 다시보기 - 인스턴스 생명 및 소멸, 접근제어 (0) | 2021.10.13 |
[Swift] 문법 다시보기 - 메서드 (0) | 2021.10.13 |