Swfit中枚举的总结以及使用
来源:互联网 发布:上海知恩服饰怎么样 编辑:程序博客网 时间:2024/05/29 15:58
枚举定义了一组具有相关性的数据,是开发者可以再带吗中以一个安全的方式来使用这些值,以又助于提供代码的可读性。
在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//使用defaultswitch name { case .name_01: //打印原值 print(name.rawValue); break;default: print("没有找到")}//不使用defaultlet age:Enum_age = .age2switch 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("没有找到")}
- Swfit中枚举的总结以及使用
- Swfit UITableView的使用(六)
- swfit 3.0 通知的使用
- C#中枚举类型的使用总结
- Java中枚举类的使用总结
- Java中枚举类的定义以及使用
- Swfit中视图跳转
- Swfit中视图跳转
- swfit中一个字符串显示两行不同的样式
- swfit字符串的截取
- C++中枚举的使用
- java中枚举的使用
- iOS 中枚举的使用
- iOS中枚举的使用
- java中枚举的使用
- java中枚举的使用
- C#中 枚举的使用
- JAVA中枚举的使用
- 【Codeforces 438 D】The Child and Sequence
- COGS 732. [网络流24题] 试题库
- 【IMWeb训练营作业】todo list
- [Java学习笔记]增强for循环和Map的两种读取方式
- Error:Failed to resolve: com.afollestad:material-dialogs:
- Swfit中枚举的总结以及使用
- LA3708 墓地雕塑
- Gcc编译器的工作流程
- Django 学习笔记二
- Codeforces Round #408 (Div. 2)-C. Bank Hacking-(三种方法)分类讨论,二分,集合
- 数据库安全——Oracle
- PAT 1013. 数素数
- Android的进程间通信机制之Binder初探
- 正则表达式和Object类