Swift中枚举的总结以及使用
枚举定义了一组具有相关性的数据,是开发者可以再带吗中以一个安全的方式来使用这些值,以又助于提供代码的可读性。
在Swift中,枚举可以分成两种:任意类型的枚举和指定类型的枚举,结构如下:
//任意类型的枚举 enum EnumTest01{ } //指定类型的枚举 在指定类型的枚举中不能是空的 enum EnumTest02:String{ }
任意枚举成员时要注意的问题:
1、在具有任意枚举类型中,可以将其中的成员定位为不同的类型
2、在任意的类型中,可以不定义成员,从而形成一个空的枚举类型
定义指定的枚举成员的注意的问题:
1、在指定数据类型的枚举类型中,如果原始类型是整型,可以不指定原始值。如果指定的类型非整型,需指定原始值。
2、在枚举类型指定数据类型后,其中的成员也都为此数据类型,不可以定义其他类型。
3、在为成员指定原始值时,原始值必须为唯一标识的。
4、在指定数据类型的枚举类型,必须使用case关键字定义成员。如果没有定义成员的话将会报错。
指定类型的枚举的定义成员:
enum Enum_names:String{ case name_01 = "name_01" case name_02 = "name_02" case name_03 = "name_03" case name_04 = "name_04" } enum Enum_age:Int{ case age1 case age2 case age3 = 20 case age4 }
在这里Enum_names:String中的成员都是必须赋值的,但是在Enum_age:Int有时候是没有必要进行赋值的,如上面的.age1的没有赋值起原始值为0,age2的原始值为1 如果赋值后如:age3的原始值为20 age4的原始值是21 ,总结就是在没有赋值的情况下第一个成员为0,以后递增1如果进行了赋值,从赋值开始后面依次递增1。打印原值的方法如下:
print(Enum_age.age1.rawValue);
以此进行类推获取其他成员的原始值。
当然了也可以从原始值获取枚举的成员值,代码如下:
let ageEnum = Enum_age(rawValue: 20) let nameEnum = Enum_names(rawValue: "name_01")
在任意类型的枚举类型中,可以定义任意的成员,这些成员是没有值的,在实例化时可以定义此成员的相关信息,这些信心称为相关值。定义如下面代码:
enum Barcode{ case UPCA(Int,Int,Int) case QString(String,String,String) }
将枚举成员和switch语句进行匹配时,switch语句必须要和每一个枚举成员进行匹配,不可以有遗漏,如果开发者不需要匹配每一个枚举成员,可以提供一个默认的default分之来涵盖所有没有明确匹配的成员。
如:
let name:Enum_names = .name_01 //使用default switch name { case .name_01: //打印原值 print(name.rawValue); break; default: print("没有找到") } //不使用default let age:Enum_age = .age2 switch age { case .age1: print(age.rawValue) case .age2: print(age.rawValue) case .age3: print(age.rawValue) case .age4: print(age.rawValue) } //相关值的switch的匹配 let barcodeTemp = Barcode.QString("1", "2", "3") switch barcodeTemp { case .QString(let str,let str02,let str03): print(str + str02 + str03) default: print("没有找到") }
转载于:https://www.cnblogs.com/YouLing0809/p/6733166.html
- 点赞
- 收藏
- 分享
- 文章举报
- Swift 类,结构体,枚举使用总结
- 怎么使用jacob,以及常见问题总结
- (转)window.open()使用方法以及传参数的问题总结
- 碰到一个基本输入输出流的问题,以及对于getline使用总结。
- c++总结(1)-变量作用域及extern使用以及头文件预编
- JSP中使用cookie的方法以及注意事项总结
- QlikView中LET和SET以及dollar sign($())的使用总结
- 混合使用startService,bindService,以及tartForegroud方法使用总结
- DCMTK中的findscu.exe以及movescu.exe的使用方法总结
- java enum(枚举)使用详解 + 总结
- jsp自定义标签的使用以及tld文件配置总结
- Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用
- MySQL索引类型总结和使用技巧以及注意事项
- make 使用,以及makefile的总结
- enum枚举的使用总结 在android中的应用 持续更新
- PDO防注入原理分析以及使用PDO的注意事项总结
- final 以及static使用总结
- java enum(枚举)使用详解 + 总结
- date和calendar对象的转化,使用,以及插入数据库中的总结
- Dom 学习总结以及实例的使用介绍