Nested Types

  • 为了表示更复杂的结构,swift中类、结构体和枚举可以使用内嵌类型
  • 在结构体中嵌套枚举的复杂实例
      //Nested Types in Action
      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 properities 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)")
    
    
  • 可以直接只用类型.类型访问
    let heartSymbol = BlackJackCard.Suit.hearts.rawValue
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。