Swift语法基础:5 - Swift的枚举和结构体

前端之家收集整理的这篇文章主要介绍了Swift语法基础:5 - Swift的枚举和结构体前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在Siwft中的枚举类型以及结构体,是和OC中差不多的,但Swift中又有一些特性,下面让我们来看看:


1.枚举的声明及使用

  1. enum Rank: Int {
  2. case Ace = 1
  3. case Two,Three,Four,Five,Six,Seven,Eight,Nine,ten
  4. case Jack,Queen,King
  5. func simpleDescription() -> String {
  6. switch self{
  7. case .Ace:
  8. return "ace"
  9. case .Jack:
  10. return "jack"
  11. case .Queen:
  12. return "queen"
  13. case .King:
  14. return "King"
  15. default:
  16. return String(self.rawValue)
  17. }
  18. }
  19. }
  20. let ace = Rank.King
  21. let aceRawValue = ace.rawValue
  22.  
  23. println("\(ace),\(aceRawValue)")
  24. // 打印出来的结果: (Enum Value),13

PS: 这里解释一下,枚举类型第一个开始的参数都是1,无论你是有多少case,都会递增的,比如例子的的Ace是1,那么Two就是名副其实的2,Three就是3,以此类推,一直到King,就是13,而enum里面有一个方法,这里面这个方法只是说可以在enum里定义方法,但我这个例子并没有使用.


2.枚举类型内添加Func方法以及Enum的时值

  1. enum Suit {
  2. case Spades,Hearts,Diamonds,Clubs
  3. case a
  4. func simpleDescription() -> String {
  5. switch self{
  6. case .Spades:
  7. return "spades"
  8. case .Hearts:
  9. return "hearts"
  10. case .Diamonds:
  11. return "diamonds"
  12. case .Clubs:
  13. return "clubs"
  14. default:
  15. return "a"
  16. }
  17. }
  18. }
  19.  
  20. let hearts = Suit.Hearts
  21. let heartsDescription = hearts.simpleDescription()
  22. let spades = Suit.Spades.hashValue
  23. let a = Suit.a.hashValue
  24. println("spades is \(spades),a is \(a),\(heartsDescription)")
  25. // 打印出来的结果:spades is 0,a is 4,hearts

PS: 看到例子中,我们知道enum是有时值的,这个时值是从0 开始,一直到最后一位,而且不受enum里面有多少个case影响.


3.结构体的声明和使用

  1. struct Card {
  2. var rank: Rank
  3. var suit : Suit
  4. func simpleDescription() -> String {
  5. return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
  6. }
  7. }
  8.  
  9. let threeOfSpades = Card(rank: .Three,suit: .Spades)
  10. let threeOfSpadesDescription = threeOfSpades.simpleDescription()
  11. println(threeOfSpadesDescription)
  12. // 打印出来的结果: The 3 of spades

PS: 结构体里面同样是可以嵌套Func方法使用.


4.使用枚举类型获取时间

  1. enum ServerResponse{
  2. case Result(String,String)
  3. case Error(String)
  4. }
  5.  
  6. let success = ServerResponse.Result("8:00 am","18:00")
  7. let failure = ServerResponse.Error("Out of cheese")
  8.  
  9. switch success {
  10. case let .Result(sunrise,sunset):
  11. let serverResponse = "Sunriseis at \(sunrise) and sunset is at \(sunset)."
  12. println(serverResponse)
  13. case let .Error(error):
  14. let serverResponse = "Failure... \(error)"
  15. println(serverResponse)
  16. }
  17. // 打印出来的结果: Sunriseis at 8:00 am and sunset is at 18:00.

PS: 在case let .Result()里面的sunrise和sunset是我们自己定义的,这个可以根据个人爱好随意声明,但如果是团队开发的话,那就不要随便写了,你懂的~


好了,这次我们就讲到这里,下次我们继续~

猜你在找的Swift相关文章