zoukankan      html  css  js  c++  java
  • 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.       
    4.     var simpleDescription: String {  
    5.         get {  
    6.             switch self {  
    7.             case let .First(text):  
    8.                 return text  
    9.             case let .Second(text):  
    10.                 return text  
    11.             case let .Third(text):  
    12.                 return text  
    13.             default:  
    14.                 return "get error"  
    15.             }  
    16.         }  
    17.         set {  
    18.             switch self {  
    19.             case let .First(text):  
    20.                 self = .First(newValue)  
    21.             case let .Second(text):  
    22.                 self = .Second(newValue)  
    23.             case let .Third(text):  
    24.                 self = .Third(newValue)  
    25.             }  
    26.         }  
    27.     }  
    28.     mutating func adjust() {  
    29.         switch self {  
    30.         case let .First(text):  
    31.             self = .First(text + " (first case adjusted)")  
    32.         case let .Second(text):  
    33.             self = .Second(text + " (second case adjusted)")  
    34.         case let .Third(text):  
    35.             self = .Third(text + " (third case adjusted)")  
    36.         }  
    37.     }  
    38. }  
    39. var enumConformToProtocolTest = EnumConformToProtocol.First("FirstVal")  
    40. enumConformToProtocolTest.simpleDescription  
    41. enumConformToProtocolTest.adjust()  
    42. enumConformToProtocolTest.simpleDescription  
    43.   
    44. enumConformToProtocolTest = EnumConformToProtocol.Third("ThirdVal")  
    45. enumConformToProtocolTest.simpleDescription  
    46. enumConformToProtocolTest.adjust()  
    47. enumConformToProtocolTest.simpleDescription  
    48.   
    49. var e = EnumConformToProtocol.Second("Hello")  
    50. var text = e.simpleDescription  
    51. e.simpleDescription = "Adios"  
    52. text = e.simpleDescription  
    53. e.adjust()  
    54. text = e.simpleDescription
  • 相关阅读:
    Comet OJ
    BZOJ 4026: dC Loves Number Theory 可持久化线段树 + 欧拉函数 + 数学
    BZOJ 3887: [Usaco2015 Jan]Grass Cownoisseur tarjan + spfa
    BZOJ 3357: [Usaco2004]等差数列 动态规划
    BZOJ 3043: IncDec Sequence 差分 + 思维
    BZOJ 2288: 【POJ Challenge】生日礼物 贪心 + 堆 + 链表
    BZOJ 1776: [Usaco2010 Hol]cowpol 奶牛政坛 LCA + 树的直径
    爬虫模拟有道字典进行翻译,还发现了一条好玩的js
    django-orm框架表单的增删改查
    数据库的备份,迁移
  • 原文地址:https://www.cnblogs.com/lianfu/p/5018003.html
Copyright © 2011-2022 走看看