본문 바로가기

개발

Swift 중첩된 타입 (Nested Types)

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