GGURUPiOS
Swift 공식 문서 정리 - (20) Nested Types 본문
Nested Types (중첩 타입)
열거형은 특정 구조체나 클래스의 기능을 처리하기 위해 자주 사용됨
이와 비슷하게 특정 문맥에서 좀 더 복잡한 타입을 위해 사용할 수 있는 유틸리티 클래스나 구조체를 정의 가능
스위프트에서는 이 기능을 위해 중첩타입을 지원 함.
중첩타입 ? → 열거형, 클랫, 구조체를 그 타입 안에서 다시 정의할 수 있음
struct BlackjackCard {
// nested Suit enumeration
// struct 안에 enum이 들어갈 수 있습니다.
enum Suit: Character {
case spades = "♠", hearts = "♡", diamonds = "♢", clubs = "♣"
}
// nested Rank enumeration
enum Rank: Int {
case two = 2, three, four, five, six, seven, eight, nine, ten
case jack, queen, king, ace
struct Values { // enum안에 struct가 들어가는 것도 가능합니다.
let first: Int, second: Int?
}
var values: Values {
switch self {
case .ace:
return Values(first: 1, second: 11)
case .jack, .queen, .king:
return Values(first: 10, second: nil)
default:
return Values(first: self.rawValue, second: nil)
}
}
}
// BlackjackCard properties and methods
let rank: Rank, suit: Suit
var description: String {
var output = "suit is \\(suit.rawValue),"
output += " value is \\(rank.values.first)"
if let second = rank.values.second {
output += " or \\(second)"
}
return output
}
}
예제를 보면 struct 안에 enum 이 포함되어있다. 이런식으로 중첩된 구조를 만들 수 있음
중첩 타입의 언급
중첩 타입을 선언 밖에서 사용하려면 선언된 곳의 시작부터 끝까지 적어줘야 함
let heartsSymbol = BlackjackCard.Suit.hearts.rawValue
// heartsSymbol is "♡"
'Swift > 공식문서 정리 ( 문법 )' 카테고리의 다른 글
Swift 공식 문서 정리 - (22) Protocols (1) | 2023.05.14 |
---|---|
Swift 공식 문서 정리 - (21) Extensions (0) | 2023.05.14 |
Swift 공식 문서 정리 - (19) Type Casting (0) | 2023.05.14 |
Swift 공식 문서 정리 - (18) Concurrency (0) | 2023.05.14 |
Swift 공식 문서 정리 - (17) Error Handling (0) | 2023.04.28 |