Nested Types
Enumerations, classes or structures can be nested in another type. struct Closh { enum Size: String{ case H = "high", M = "Medium", L = "Low" } enum Detail: Int { case H = 180, M = 170, L = 160 struct Price { let normal: Int, discount: Int? } var price: Price { switch self { case .H: return Price(normal: 100, discount: 90) case .M: return Price(normal: 90, discount: 80) case .L: return Price(normal: 80, discount: 70) default: return Price(normal: self.rawValue, discount: nil) } } } let size: Size, detail: Detail var description: String { return "\(size.rawValue), PriceNormal: \(detail.price.normal) PriceDiscount: \(detail.price.discount)" } } var closh = Closh(size: .M, detail: .M) print(closh.description) // Print: Medium, PriceNormal: 90 PriceDiscount: Optional(80) Referring to Nested Types ...