Apple官方文档:The Swift Programming Language
Protocols and Extensions一节的小节练习,要求自行定义一个enumeration枚举类型,并且遵循ExampleProtocol协议:

protocol ExampleProtocol {var simpleDescription: String { get }mutating func adjust()
}

在网上找了好久,都不知道怎样实现,最后参照一篇帖子(http://forums.macrumors.com/showthread.php?t=1740890),最终实现如下:

enum EnumConformToProtocol: ExampleProtocol {case First(String), Second(String), Third(String)var simpleDescription: String {get {switch self {case let .First(text):return textcase let .Second(text):return textcase let .Third(text):return textdefault:return "get error"}}set {switch self {case let .First(text):self = .First(newValue)case let .Second(text):self = .Second(newValue)case let .Third(text):self = .Third(newValue)}}}mutating func adjust() {switch self {case let .First(text):self = .First(text + " (first case adjusted)")case let .Second(text):self = .Second(text + " (second case adjusted)")case let .Third(text):self = .Third(text + " (third case adjusted)")}}
}var enumConformToProtocolTest = EnumConformToProtocol.First("FirstVal")
enumConformToProtocolTest.simpleDescription
enumConformToProtocolTest.adjust()
enumConformToProtocolTest.simpleDescriptionenumConformToProtocolTest = EnumConformToProtocol.Third("ThirdVal")
enumConformToProtocolTest.simpleDescription
enumConformToProtocolTest.adjust()
enumConformToProtocolTest.simpleDescriptionvar e = EnumConformToProtocol.Second("Hello")
var text = e.simpleDescription
e.simpleDescription = "Adios"
text = e.simpleDescription
e.adjust()
text = e.simpleDescription

运行结果截图:

转载于:https://www.cnblogs.com/sesexxoo/p/6189924.html

【Swift学习笔记00】——enumeration枚举类型遵循协议protocol相关推荐

  1. Swift学习笔记-协议(Protocols)

    1.0 翻译:geek5nan 校对:dabing1022 2.0 翻译:futantan 校对:小铁匠Linus 定稿:shanksyang 本页包含内容: 协议的语法(Protocol Synta ...

  2. ElasticSearch 6.x 学习笔记:12.字段类型

    ElasticSearch 6.x 学习笔记:12.字段类型 欢迎转载. https://blog.csdn.net/chengyuqiang/article/details/79048800 12. ...

  3. swift学习笔记《5》- 实用

    title: swift学习笔记<5>- 实用 date: 2016-09-21 21:39:00 categories: 学习笔记 Swift学习 tags: Swift 1.setVa ...

  4. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  5. Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

    Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片 设备图片库和照相机是图像的两个重要来源,使用UIKit中提供的图像选择器UIImagePic ...

  6. Java学习笔记之Enum枚举(1)

    Java学习笔记之Enum枚举(1) 前言 最基本的用法 了解Java中的Enum 后记 链接 前言 这是在学习Java过程中对自己遇到并得以解决的问题的一些记录,一方面是记录下来方便自己以后查询,一 ...

  7. 计算机网络学习笔记(2. 什么是网络协议)

    计算机网络学习笔记(2. 什么是网络协议) 1. 协议是计算机网络有序运行的重要保证 硬件(主机,路由器,通信链路等)是计算机网络的基础 计算机网络中的数据交换必须遵守事先约定好的规则 如同交通系统 ...

  8. Swift学习笔记(10)--枚举

    1.定义语法: enum SomeEnumeration {// enumeration definition goes here } 2.使用 enum CompassPoint {case Nor ...

  9. Swift学习笔记 (四十二) 不透明类型

    具有不透明返回类型的函数或方法会隐藏返回值的类型信息.函数不再提供具体的类型作为返回类型,⽽是根据它支持的协议来 描述返回值.在处理模块和调用代码之间的关系时,隐藏类型信息⾮常有用,因为返回的底层数据 ...

最新文章

  1. 图像拼接--Fish-Eye Lenses-Based Camera Calibration and Panoramic Image Stitching
  2. C++多线程简单入门(二)(Windows版)
  3. 【UIKit】TabView
  4. 什么是透传通道?(透明传输通道,就是当中继使)
  5. element UI 制作模糊搜索框
  6. [css] 如何让一个块元素绝对居中?
  7. SpringBoot项目部署到独立的Tomcat上
  8. 三分钟完全了解PyTorch中卷积层内部计算方法和权值初始值的来历,让你对模型有更深层次的理解
  9. php限制下载文件格式,php下载文件源代码(强制任意文件格式下载)_PHP教程
  10. python 收发邮件_Python 【收发邮件】
  11. android studio中把c/c++文件编译成.so库(一)
  12. SAP License:SAP系统合规性审计介绍
  13. wdos相关问题解答
  14. Libmicrohttpd简介
  15. LIN总线协议详解4(进度表)
  16. word怎么让封面、目录没有页码,页码从正文开始
  17. 网站部署证书 百度浏览器仍提示不安全网站怎么办
  18. Unity制作UFO小游戏
  19. 微信文章排版技巧和相关排版工具
  20. 共享充电宝广告机功能与特点

热门文章

  1. 如何在WPF中调用Winform控件
  2. hibernate 级联删除
  3. 5/7 SELECT语句:过滤(LIKE使用通配符)
  4. PHP 给页面内容中的所有图片添加特定链接
  5. eclipse 查找
  6. mysql的骚操作:自增长的字段同时插入到另一个字段
  7. Jenkins搭建Nodejs自动化测试
  8. 剑指offer第12题打印从1到n位数以及大整数加法乘法
  9. TCP/IP 笔记一
  10. poj 3080 Blue Jeans