Swift 枚举的用法
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 枚举的用法相关推荐
- Objetive-C枚举位移操作Swift枚举位移操作
Objective-C 枚举 typedef NS_ENUM(NSInteger,LineDirection){LineDirectionTop = 1 << 0,LineDirectio ...
- C# 枚举高级用法之Description
c# 枚举高级用法之 基础枚举 namespace TestEnum {//声明public enum Name{//默认值 boob = 0 ,依次往下排,可自定义 jackMa = 3,jackC ...
- enum枚举类型用法
文章目录 1. 枚举类型和枚举变量 1.1 枚举类型的定义和声明 1.2 枚举变量的定义和声明 2. 枚举变量和枚举常量的关联对应 3. 枚举类型和变量的应用 3.1 作为判断语句中的逻辑 3.2 一 ...
- swift enum高级用法
本文是一篇详细且具有实战意义的教程,涵盖几乎所有枚举(Enum)知识点,为你解答Swift中枚举的应用场合以及使用方法. 和switch语句类似,Swift中的枚举乍看之下更像是C语言中枚举的进阶版本 ...
- 枚举类型用法_Mybatis-plus常见用法总结三
前面已经介绍了Mybatis-plus基本用法,今天为大家分享一些Mybatis-plus高级应用 逻辑删除 自动注入 枚举类型处理 Sql注入器 多租户 表结构 CREATE TABLE `sys_ ...
- Java enum(枚举)的用法详解(转)
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...
- 【周年福利Round1】一文看破Swift枚举本质
本文字数:6139字 预计阅读时间:16分钟 前言 随着Swift5.0版本release之后,abi也变得逐渐稳定起来,加上Swift语法简洁.安全.语法糖丰富等特性,越来越多的开发者们开始拥抱.学 ...
- 详解C# 枚举高级用法之Description
基础枚举 namespace TestEnum {//声明public enum Name{//默认值 boob = 0 ,依次往下排,可自定义 jackMa = 3,jackCHan那就= 4boo ...
- swift 枚举详解
参考博客:http://c.biancheng.net/cpp/html/2426.html 参考官方文档:https://developer.apple.com/library/ios/docume ...
- mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:
mysql中的枚举类型ENUM的用法: (2010-06-18 13:44:13) mysql中的枚举类型ENUM的用法: mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中 ...
最新文章
- SUN dataset图像数据集下载
- Java进阶:CAS原理详解
- 7.1 useradd:创建用户
- VC++中进程与多进程管理的方法[转]
- yii2 ajax访问控制器,如何在yii2中运行控制器动作作为ajax
- linux的shell编程课设,linux课程设计-shell编程.doc
- 2017.10.24 学校食堂Dining 失败总结
- 移卡科技java_聊一聊Java垃圾回收与卡表技术
- C#笔记09 结构、枚举、异常、泛型、操作符重载、dll、垃圾回收与资源清理、XML注释
- 【数据结构】单链表基本操作(C++实现)
- WPF简单实用方法(持续更新)
- H264 SPS中得到宽高的代码(java/c),测试通过
- 2021年中国城市建设状况公报有关供水、燃气、供热数据已出
- 带通 带阻滤波器 幅频响应_方程推导:二阶有源带通滤波器设计!(内附教程+原理图+视频+代码下载)...
- Ubuntu 安装 peek 动态截图软件
- 仓库温度湿度控制措施_一般仓库的温湿度控制范围是多少合适?
- LINUX安装KDC服务
- 英特尔oneAPI---跨架构实现高效率
- Windows驱动_WSK驱动之三WSK编程注意事项
- Mysql中事务及事务隔离级别详解