[Swift5] Nested Types
- 다음은 Swift 5.6 Doc의 Nested Types 공부 내용을 정리했음을 밝힙니다.
Nested Types
복잡한 타입 내부에서 사용하는 목적으로 클래스나 구조체를 정의할 수 있다. nested
타입을 통해 다른 복잡한 타입 안에 사용할 열거형, 클래스, 구조체를 정의할 수 있다. nested
타입은 다른 타입 내부 안에 타입을 정의하면 된다.
실행 중인 Nested
타입
Blackjack
구조체 내부에 Suit
, Rank
두 개의 열거체 타입이 정의되어 있다는 점에서 Nested
다.
struct BlackjackCard {
// nested Suit enumeration
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 {
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
}
}
let theAceOfSpades = BlackjackCard(rank: .ace, suit: .spades)
print("theAceOfSpades: \(theAceOfSpades.description)")
// Prints "theAceOfSpades: suit is ♠, value is 1 or 11"
theAceOfSpades
는 ace
, spades
를 파라미터로 받은 블랙잭 결과를 보여준다. description
프로퍼티는 파라미터로 받은 값을 통해 연산 결과를 리턴하는 연산 프로퍼티로, BlackjackCard
내부에서 nested
형태로 선언한 열거체 케이스를 활용한다.
Nested
타입 참조
nested
타입을 선언한 컨텍스트 외부에서 사용하려면 nested
된 타임을 선언한 가장 큰 컬렉션 타입부터 사용한다.
let heartsSymbol = BlackjackCard.Suit.hearts.rawValue
// heartsSymbol is "♡"
Suit
는 BlackjackCard
안에 선언된 nested
타입이므로 BlackjackCard
부터 사용해야 한다.
Author And Source
이 문제에 관하여([Swift5] Nested Types), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@j_aion/Swift5-Nested-Types저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)