Swift -- enum 继承 protocol

原文地址链接:http://blog.csdn.net/duanyipeng/article/details/32338575

Apple官方文档:The Swift Programming Language

Protocols and Extensions一节的小节练习,要求自行定义一个enumeration枚举类型,并且遵循ExampleProtocol协议:

  

  1. protocol ExampleProtocol {
  2. var simpleDescription: String { get }
  3. mutating func adjust()
  4. }

  // 枚举继承协议

  1. enum EnumConformToProtocol: ExampleProtocol {
  2. case First(String), Second(String), Third(String)
  3. var simpleDescription: String {
  4. get {
  5. switch self {
  6. case let .First(text):
  7. return text
  8. case let .Second(text):
  9. return text
  10. case let .Third(text):
  11. return text
  12. default:
  13. return "get error"
  14. }
  15. }
  16. set {
  17. switch self {
  18. case let .First(text):
  19. self = .First(newValue)
  20. case let .Second(text):
  21. self = .Second(newValue)
  22. case let .Third(text):
  23. self = .Third(newValue)
  24. }
  25. }
  26. }
  27. mutating func adjust() {
  28. switch self {
  29. case let .First(text):
  30. self = .First(text + " (first case adjusted)")
  31. case let .Second(text):
  32. self = .Second(text + " (second case adjusted)")
  33. case let .Third(text):
  34. self = .Third(text + " (third case adjusted)")
  35. }
  36. }
  37. }
  38. var enumConformToProtocolTest = EnumConformToProtocol.First("FirstVal")
  39. enumConformToProtocolTest.simpleDescription
  40. enumConformToProtocolTest.adjust()
  41. enumConformToProtocolTest.simpleDescription
  42. enumConformToProtocolTest = EnumConformToProtocol.Third("ThirdVal")
  43. enumConformToProtocolTest.simpleDescription
  44. enumConformToProtocolTest.adjust()
  45. enumConformToProtocolTest.simpleDescription
  46. var e = EnumConformToProtocol.Second("Hello")
  47. var text = e.simpleDescription
  48. e.simpleDescription = "Adios"
  49. text = e.simpleDescription
  50. e.adjust()
  51. text = e.simpleDescription