1、基本用法

//enum direction {
//    case north
//    case south
//    case west
//    case east
//}  等价于下面写法
enum direction {case north,south,west,east
}var dir = direction.north
dir = .south
dir = direction.west
//print(dir)switch dir  {
case .south :print("south")
case .north :print("north")
case .east :print("east")
case .west :print("west")
}
//输出 west

2、关联值 (associated Values )

enum score {case point (Int)case grade (Character)
}
var sc = score.point(10)
sc = .grade("A")//print(sc)switch sc {
case let .point(i):print("分数\(i)")
case let .grade(i):print("等级\(i)")
}
//输出 等级Aenum date{case ymd (Int,Int,Int)case string (String)
}var d = date.ymd(2005, 8, 8)
//d = .string("2008-8-8")switch d {
case let .string(i):print("sting时间\(i)")
case let .ymd(a, b, c): // .ymd(let a,let b,let c):print("时间\(a)-\(b)-\(c)")
}
//时间2005-8-8 输出

3、原始值  rawValue

enum grade :String{case perfect = "A"case great = "B"case good = "C"case bad = "D"
}
print(grade.perfect.rawValue) //A
print(grade.great.rawValue)//B
print(grade.good.rawValue)//C
print(grade.bad.rawValue)//D

隐式原始值

//t如果枚举初始值类型为int \ String  Swift 会为其自动分配原始值
enum time :Int { //默认值 0 1 2case morning , afternoon ,evening
}
print(time.afternoon.rawValue) // 1
enum direction : String { //默认值就是当前字符串case north,south,west,east
}

4、递归枚举

indirect enum mathExpor{case num(Int)case sum(mathExpor,mathExpor)case difference(mathExpor,mathExpor)
}
let one = mathExpor.num(8)
let two = mathExpor.num(5)
let three = mathExpor.num(3)
let sum = mathExpor.sum(one, two)
let difference = mathExpor.difference(sum, three)func calcute (_ math:mathExpor )->Int{switch math {case let .num(i):return icase let .sum(i, j):return calcute(i)+calcute(j)case let .difference(i, j):return calcute(i)-calcute(j)}}
print(calcute(difference)) //10

5、MemoryLayout 获取数据类型占用的内存大小

enum passWord{case num(Int,Int,Int,Int) // int 8字节 * 4 = 32case  string              // 分配一个字节
}
print(MemoryLayout<passWord>.stride) //40 分配占用空间大小
print(MemoryLayout<passWord>.size) //33 实际占用空间大小
print(MemoryLayout<passWord>.alignment) //8 对齐参数

var pwd  = passWord.string
print(MemoryLayout.size(ofValue: pwd))  // 33
print(MemoryLayout.stride(ofValue: pwd)) //40
print(MemoryLayout.alignment(ofValue: pwd)) //8
pwd = .num(100, 1, 2, 40)
print(MemoryLayout.size(ofValue: pwd))  // 33
print(MemoryLayout.stride(ofValue: pwd)) //40
print(MemoryLayout.alignment(ofValue: pwd)) //8

转载于:https://www.cnblogs.com/ZhangShengjie/p/11341630.html

Swift 枚举的用法相关推荐

  1. Objetive-C枚举位移操作Swift枚举位移操作

    Objective-C 枚举 typedef NS_ENUM(NSInteger,LineDirection){LineDirectionTop = 1 << 0,LineDirectio ...

  2. C# 枚举高级用法之Description

    c# 枚举高级用法之 基础枚举 namespace TestEnum {//声明public enum Name{//默认值 boob = 0 ,依次往下排,可自定义 jackMa = 3,jackC ...

  3. enum枚举类型用法

    文章目录 1. 枚举类型和枚举变量 1.1 枚举类型的定义和声明 1.2 枚举变量的定义和声明 2. 枚举变量和枚举常量的关联对应 3. 枚举类型和变量的应用 3.1 作为判断语句中的逻辑 3.2 一 ...

  4. swift enum高级用法

    本文是一篇详细且具有实战意义的教程,涵盖几乎所有枚举(Enum)知识点,为你解答Swift中枚举的应用场合以及使用方法. 和switch语句类似,Swift中的枚举乍看之下更像是C语言中枚举的进阶版本 ...

  5. 枚举类型用法_Mybatis-plus常见用法总结三

    前面已经介绍了Mybatis-plus基本用法,今天为大家分享一些Mybatis-plus高级应用 逻辑删除 自动注入 枚举类型处理 Sql注入器 多租户 表结构 CREATE TABLE `sys_ ...

  6. Java enum(枚举)的用法详解(转)

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  7. 【周年福利Round1】一文看破Swift枚举本质

    本文字数:6139字 预计阅读时间:16分钟 前言 随着Swift5.0版本release之后,abi也变得逐渐稳定起来,加上Swift语法简洁.安全.语法糖丰富等特性,越来越多的开发者们开始拥抱.学 ...

  8. 详解C# 枚举高级用法之Description

    基础枚举 namespace TestEnum {//声明public enum Name{//默认值 boob = 0 ,依次往下排,可自定义 jackMa = 3,jackCHan那就= 4boo ...

  9. swift 枚举详解

    参考博客:http://c.biancheng.net/cpp/html/2426.html 参考官方文档:https://developer.apple.com/library/ios/docume ...

  10. mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:

    mysql中的枚举类型ENUM的用法: (2010-06-18 13:44:13) mysql中的枚举类型ENUM的用法: mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中 ...

最新文章

  1. SUN dataset图像数据集下载
  2. Java进阶:CAS原理详解
  3. 7.1 useradd:创建用户
  4. VC++中进程与多进程管理的方法[转]
  5. yii2 ajax访问控制器,如何在yii2中运行控制器动作作为ajax
  6. linux的shell编程课设,linux课程设计-shell编程.doc
  7. 2017.10.24 学校食堂Dining 失败总结
  8. 移卡科技java_聊一聊Java垃圾回收与卡表技术
  9. C#笔记09 结构、枚举、异常、泛型、操作符重载、dll、垃圾回收与资源清理、XML注释
  10. 【数据结构】单链表基本操作(C++实现)
  11. WPF简单实用方法(持续更新)
  12. H264 SPS中得到宽高的代码(java/c),测试通过
  13. 2021年中国城市建设状况公报有关供水、燃气、供热数据已出
  14. 带通 带阻滤波器 幅频响应_方程推导:二阶有源带通滤波器设计!(内附教程+原理图+视频+代码下载)...
  15. Ubuntu 安装 peek 动态截图软件
  16. 仓库温度湿度控制措施_一般仓库的温湿度控制范围是多少合适?
  17. LINUX安装KDC服务
  18. 英特尔oneAPI---跨架构实现高效率
  19. Windows驱动_WSK驱动之三WSK编程注意事项
  20. Mysql中事务及事务隔离级别详解

热门文章

  1. 伪静态页面在iis7.0中的配置
  2. 上传文件应注意的异常:FileUpLoad控件.
  3. 二十五、K8s系统强化1- 系统安全与apparmor
  4. 二十三、K8s集群强化1-认证
  5. zabbix详解(十一)——zabbix监控MySQL性能实战
  6. Ansible详解(十八)——Ansible使用小技巧
  7. Redis详解(五)——Redis多实例
  8. 【Lolttery】项目开发日志 (七)socket io 结合 react js实现简单聊天室
  9. php规范PSR-3(日志接口)
  10. JFinal实现原理