Nested Types 只是为了方便类型的整合和使用
struct BlackjackCard {// nested Suit enumerationenum Suit: Character {case spades = "♠", hearts = "♡", diamonds = "♢", clubs = "♣"}// nested Rank enumerationenum Rank: Int {case two = 2, three, four, five, six, seven, eight, nine, tencase jack, queen, king, acestruct 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 methodslet rank: Rank, suit: Suitvar 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"