[Swift 文書を読む]ネストされたタイプ


こんにちは!エリンです🙇🏻‍♀️
SWIFT公式ドキュメント精読シリーズ!
私はもう私のスタイルに合わせて整理したので、もっと情報が必要です.
文書リンクを押して確認してください!
もっと快適に見るために、韓国語翻訳サイトを一緒に確認しました!ほほほ
では、始めましょう.
この文章は勉強しながら書いたので、間違った情報があるかもしれません。🥺 すぐ忘れちゃうよ。これは未来の私にもう一度伝えるためです。 間違ったところがあればコメントで親切に教えてください🙏

オーバーラップタイプ


列挙は、通常、特定の構造またはクラスを処理する機能に使用されます.同様に、特定のコンテキストでより複雑なタイプのユーティリティクラスまたは構造体に使用できるように定義できます.SWIFTはネストタイプ(Nested Type)をサポートし、この機能を実現します.列挙、クラス、および構造体は、タイプ内で再定義できます.
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
     }
 }
 
 let theAceOfSpades = BlackjackCard(rank: .ace, suit: .spades)
print("theAceOfSpades: \(theAceOfSpades.description)")
// Prints "theAceOfSpades: suit is ♠, value is 1 or 11"

let heartsSymbol = BlackjackCard.Suit.hearts.rawValue
// heartsSymbol is "♡"
今日もSweetの公式文書を整理しました~
次も頑張ります!
ありがとうございます.🙇🏻‍♀️