목차
스위프트에는 타입 내부에 타입을 정의하고 구현할 수 있다. 이처럼 타입 내부에 새로운 타입을 선언해준 것을 중첩 타입이라고 한다.
클래스 내부에 새 클래스, 클래스 내부에 새 구조체, 구조체 내부에 새 열거형 등의 타입을 중첩해서 타입 내부에 새 타입을 정의할 수 있다. 이름은 같더라도 타입 마다 역할을 다르게 부여할 때 쓰기도 한다.
class Person {
enum Job {
case jobless, programmer, student
}
var job: Job = .jobless
}
class Student: Person {
enum School {
case elementary, middle, high
}
var school: School
init(school: School) {
self.school = school
super.init()
self.job = .student
}
}
let personJob: Person.Job = .jobless
let studentJob: Student.Job = .student
let student: Student = Student(school: .middle)
패턴은 ‘단독 또는 복합 값의 구조를 나타내는 것’이고, 패턴 매칭은 ‘코드에서 어떤 패턴의 형태를 찾아내는 행위’라고 할 수 있다. 대부분의 패턴은 switch, if, guard, for 등의 키워드와 아주 친하며 두 개 이상의 키워드가 합을 이뤄 동작한다.
스위프트의 패턴은 크게 두 종류로 나뉜다.