[swift学习之三]枚举练习
2016-05-05 13:35
393 查看
//------------------------// enum WeekDays{ case Monday,TuesDay,WednesDay,ThrusDay case Friday } func ShowDayStr(aday:WeekDays) -> Void { switch aday { /*亮点1:不用直接写变量了,类似with的用法~*/ case .Monday: print("周一") default: print("除了周一的工作日") } /*亮点2:最原始的索引值了,即使指定了原始值,它还是保留原值,这里总是0~*/ print(aday.hashValue) } ShowDayStr(WeekDays.Monday) /* 如果到这里,以为枚举内容就结束了。 但swift做了扩展,这也是单独写个博客原因。先说多出来的概念。 1: 原始值: enum 枚举名 : 数据类型 { case 成员名 = 默认值 枚举不支持继承,所以冒号后面只是原始值的类型,如字符、字符串、整数和浮点数等。 } 2:相关值 enum 枚举名{ case 成员名(Type1,Type2...) } 我自己的理解:这两种枚举互相冲突,声明了带数据类型的,就写不了相关值;写相关值,就不能加数据类型。 */ enum WeekDaysExtendWithRaw: String{ case Monday="星期一",TuesDay="星期二",WednesDay="星期三",ThrusDay case Friday func Discription() -> String { switch self { case .Monday: return "今天是星期一" default: return rawValue } } } /*亮点3:如果指定了原始值的数据类型,就多了个构造方法,但返回可能是空*/ var Day = WeekDaysExtendWithRaw.init(rawValue: "星期一") Day?.hashValue print(Day?.Discription()) print(Day==WeekDaysExtendWithRaw.Monday) enum WeekDaysExtendWithAssociated { case Monday(String,String,Int),TuesDay,WednesDay(String,String,Int),ThrusDay case Friday func Discription() -> String { switch self { case .Monday(let a,let b, let c): return "\(a)\(b)\(c)" default: return "除周一外的工作日" } } } var DayAssociated = WeekDaysExtendWithAssociated.WednesDay("Hello", "World", 8) /*如果指定了相关值,就隐藏了hashValue以及与WeekDaysExtendWithAssociated.WednesDay做比较判断。 更不像原值的那样,能利用索引点运算出来,像这样 let RawValue = (DayAssociated,Day) print(RawValue.0.Discription()) 也许这样处理更安全吧,这个还没理解透彻~ */ print(DayAssociated.Discription())
不知道总结的是否全面,不过上面的用法已经很强大了,足矣满足所有枚举的需求。
一个枚举都整这么热闹,看来swift真不是盖的~
参考:http://www.ituring.com.cn/tupubarticle/3592
相关文章推荐
- Swift重载和自定义运算符
- Swift_关键字static和class的区别
- Swift笔记-让你2小时学会Swift
- Swift-字典
- Swift 泛型(十九)
- 浅谈 Swift 中的泛型
- Swift代理方法反向传值
- Swift的unowned字段
- Swift-控制流
- Swift下的Lazy懒加载模式
- Swift学习笔记二:常用类型的注意事项
- Swift学习笔记一:语言特性
- swift设置返回按钮图标
- 1.swift_初体验
- 对照Java学习Swift--下标(Subscripts)
- Swift中的分类
- Swift中TextField
- Swift解读专题一——Swift2.2语言预览
- Swift 仿简书、淘宝App的弹出view效果
- swift 基本语法(二)