카테고리 없음

[Swift] 중첩타입(Nested Types)

magpiebros 2023. 4. 9. 13:19
반응형

안녕하세요. 맥파이입니다.

오늘은 중첩타입에 대해 알아볼께요.

 

중첩타입(Nested Types)

Swift에서는 클래스, 구조체, 열거형 등의 타입 내부에 다른 타입을 중첩하여 사용할 수 있습니다. 

이를 중첩 타입(Nested Types)이라고 합니다.
중첩 타입은 주로 해당 타입 내부에서만 사용되는 타입을 정의할 때 사용됩니다.

다른 타입의 멤버로도 선언될 수 있습니다.

 

중첩 타입을 활용하여 코드의 가독성과 유지보수성을 높일 수 있습니다.

 

 

편의성 증가

중첩 타입을 사용하면, 특정 타입과 관련된 자료형을 하나의 블록으로 묶을 수 있습니다. 이렇게 하면 사용자는 해당 타입의 모든 속성 및 메서드를 한 눈에 볼 수 있습니다. 예를 들어, 애플리케이션에서 사용하는 색상을 관리하는 타입이 있다면, 이 타입 내부에서 색상에 관련된 상수 및 메서드를 중첩 타입으로 구성할 수 있습니다.

struct AppColor {
  struct RGB {
    var red: Float
    var green: Float
    var blue: Float
  }
  
  static let primaryColor = RGB(red: 0.8, green: 0.4, blue: 0.1)
  static let secondaryColor = RGB(red: 0.2, green: 0.6, blue: 0.3)
}

위 코드에서 AppColor 구조체 내부에서 RGB라는 중첩 타입을 선언하였습니다. RGB 타입은 red, green, blue의 값으로 구성된 구조체입니다. 또한, AppColor 구조체 내부에서는 primaryColor와 secondaryColor라는 상수로 RGB 타입의 인스턴스를 생성하여 저장하였습니다.


코드 구조화

중첩 타입을 사용하여 코드를 구조화하면, 코드의 가독성을 높일 수 있습니다. 특히, 큰 규모의 프로젝트에서는 코드의 복잡도가 증가할 가능성이 큽니다. 이 때, 중첩 타입을 사용하면 코드를 더욱 직관적이고 이해하기 쉬운 방향으로 구성할 수 있습니다.

class ShoppingCart {
    class Item {
        let name: String
        let price: Double
        
        init(name: String, price: Double) {
            self.name = name
            self.price = price
        }
    }
    
    private var items: [Item] = []
    
    func addItem(item: Item) {
        items.append(item)
    }
    
    func totalPrice() -> Double {
        var totalPrice = 0.0
        for item in items {
            totalPrice += item.price
        }
        return totalPrice
    }
}

Item 클래스를 중첩 클래스로 사용함으로써, ShoppingCart 클래스와 밀접한 관련이 있는 클래스를 논리적으로 그룹화할 수 있습니다.

중첩 타입은 비공개 구현 세부 사항을 캡슐화하거나 다른 타입의 내부 데이터를 유지하는 데에도 사용될 수 있습니다. 

 

그럼 또 만나요!!

반응형