Swift19-嵌套类型

嵌套类型实践、引用嵌套类型。

 

枚举常被用于为特定类或结构体实现某些功能。类似地,枚举可以方便的定义工具类或结构体,从而为某个复杂的类型所使用。为了实现这种功能,Swift允许定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。

要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的{}内,而且可以根据需要定义多级嵌套。

 

嵌套类型实践:

struct BlackjackCard{

  //嵌套的Suit枚举

  enum Suit:Character{  //描述了扑克牌的四种花色

    case Spades="?", Hearts="?", Diamonds="?", Clubs="?"

  }

  //嵌套的Rank枚举

  enum Rank:Int{  //描述扑克牌的值,A~10,J,Q,K

    case Two=2,Three, Four, Five, Six, Seven, Eight, Nine, Ten

    case Jack, Queue, King, Ace

    struct Values{

      let first:Int, Seocnd:Int?

    }

    var values:Values{

      switch self{

      case .Ace:

        return Values(first:1, second:11)

      case .Jack, .Queue, .King:

        return Values(first:10, second:11)

      default:  

        return Values(first:self.rawValue, second:nil)

      }

    }

  }

  //属性和方法

  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 heartsSymbol=BlackjackCard.Suit.Hearts.rawValue

 

posted @ 2020-05-11 07:57  吉吉boy  阅读(185)  评论(0编辑  收藏  举报