728x90
Swift 중첩된 타입 (Nested Types)
Swift에서 중첩된 타입은 클래스, 구조체, 열거형과 같은 타입을 다른 타입 안에 정의하는 기능입니다. 이를 통해 코드를 보다 모듈화하고 관리하기 쉽게 만들 수 있으며, 관련된 타입들을 하나의 블록으로 묶어 명확성을 높일 수 있습니다.
1. 기본 구조
struct OuterType {
// ... OuterType의 멤버 ...
nested struct InnerType {
// ... InnerType의 멤버 ...
}
// ... OuterType의 멤버 ...
}
- OuterType: 중첩된 타입을 포함하는 외부 타입입니다.
- nested: 중첩된 타입을 선언하는 키워드입니다.
- InnerType: 외부 타입 안에 정의된 중첩된 타입입니다.
2. 활용 사례
- 관련된 타입들을 하나로 묶기: 서로 밀접하게 관련된 여러 타입들을 하나의 중첩된 타입으로 정의하여 코드를 보다 명확하고 관리하기 쉽게 만들 수 있습니다.
- 코드 모듈화: 기능별로 중첩된 타입을 분리하여 코드를 모듈화하고 재사용성을 높일 수 있습니다.
- 내부 구현 숨기기: 중첩된 타입의 구현을 외부에서 숨겨 캡슐화를 강화하고 코드 변경의 영향 범위를 제한할 수 있습니다.
- 데이터 구조 정의: 복잡한 데이터 구조를 중첩된 타입을 사용하여 명확하고 효율적으로 정의할 수 있습니다.
3. 참조
- 중첩된 타입을 외부에서 참조: 외부 타입의 인스턴스를 통해 중첩된 타입에 접근할 수 있습니다.
let outerValue = OuterType()
let innerValue = outerValue.InnerType()
- 접근 제어: 중첩된 타입의 접근 제어를 internal, private 또는 public 키워드를 사용하여 제어할 수 있습니다.
4. 예시
struct Point {
let x: Double
let y: Double
struct Distance {
static func calculate(from: Point, to: Point) -> Double {
let dx = to.x - from.x
let dy = to.y - from.y
return sqrt(dx * dx + dy * dy)
}
}
}
let p1 = Point(x: 10, y: 20)
let p2 = Point(x: 30, y: 40)
let distance = Point.Distance.calculate(from: p1, to: p2)
print(distance) // 28.28427124746099
5. 참고 자료
'개발' 카테고리의 다른 글
Swift 프로토콜 (Protocols) (1) | 2024.07.05 |
---|---|
Swift 확장 (Extensions) (0) | 2024.07.05 |
swift 타입 캐스팅 (Type Casting) (0) | 2024.07.05 |
swift 매크로 (Macros) (0) | 2024.07.05 |
swift 동시성 (Concurrency) (0) | 2024.07.05 |