Swift中枚举

学习笔记来自《极客学院》

 1 import Foundation
 2
 3 /**********1*Swift定义枚举的语法格式*************/
 4 /*
 5 enum 枚举名 {
 6     使用case关键字列出所有枚举值
 7     枚举的其他成员
 8 }
 9 */
10 //定义枚举
11 enum Season{
12     case Spring
13     case Summer
14     case Fall
15     case Winter
16 }
17 //使用一个case列举所有的值
18 enum Season2{
19     case Spring,Summer,Fall,Winter
20 }
21 //使用枚举声明变量
22 var weather : Season//这里就是声明一个Season 类型的变量weather
23 weather = .Summer//或者是:weather = Season.Summer
24 println("1:\(weather)")
25
26 var enum_1 = Season.Winter//直接用类型推断也可以
27 switch(enum_1){
28 case .Spring:
29     println(Season.Spring)
30 case .Summer:
31     println(Season.Summer)
32 default:
33     println("在家里")
34 }//switch中的case没有覆盖枚举的所有值,必须添加default语句,也就是说如果列出了枚举所有的值,就可以删掉default语句了
35
36
37 /**********2*原始值*************/
38 /*
39 enum 枚举值 : 原始值类型{
40     case 枚举值 = 原始值
41 }
42 */
43 enum Weekday : Int{
44     case Mon,Tur,Wen = 4,Thur,Fri,Sat,Sun
45 }//因为这里都是整形所以会自动推断他们分别是1~7
46 println(Weekday.Wen)//不知道结果为甚是这样的:(Enum Value)
47
48 //所以获取枚举的 原始值
49 println(Weekday.Mon.rawValue)
50 println(Weekday.Tur.hashValue)
51
52 enum Season3 : Character{
53     case Spring = "春"
54     case Summer = "夏"
55     case Fall = "秋"
56     case Winter = "冬"
57 }//但是上面类型的推断仅仅局限在整型的情况下,swift会自动推断
58
59 //根据原始值来获取枚举值,调用的事构造器,这个构造器是可选类型:init?(rawValue:)
60 var mySeason = Season3(rawValue: "秋")
61 if mySeason != nil{
62     switch(mySeason!){//需要间接解包
63     case .Spring:
64         println("春天不是读书天")
65     case .Summer:
66         println("夏天炎炎正好呢")
67     case .Fall,.Winter:     //这里表示“或”
68         println("秋多蚊蝇冬日冷")
69     default:
70         println("读书只好等明年")
71     }
72 }
73
74
75 /**********3*关联值*************/
76 //在每个枚举值后面添加括号扩起来的关联值,然后关联值个数是0~多个,然后定义类型值,当然也可以仅仅只有类型,不需要关联值名称
77 enum Planet {
78     case Earth(weight: Double,name: String)
79     case Mars(density: Double,name:String,weight:Double)
80     case Venus(Double,String)
81     case Saturn
82     case Neptune
83 }//其实这后面括号扩起来的就是元祖
84 //获取枚举值,系统还会自动提示,这个操作一下就能明白了
85 var p1 = Planet.Earth(weight: 23, name: "hah")
86 //接下来就是得到这些关联值,要得到这些关联值,就要声明额外的变量
87 //但是下面直接用的是switch语句
88 switch(p1){
89 case Planet.Earth(var weight,var name):
90     println("\(name)~~~~~~~~~\(weight)")
91 case let Planet.Mars(density:d,name:n,weight:dou):
92     println("\(d)")
93 default:
94     break
95 }

转载于:https://www.cnblogs.com/goodboy-heyang/p/4649504.html

Swift面向对象基础(上)——Swift中的枚举相关推荐

  1. Swift面向对象基础(上)——Swift中的类和结构体(下)

    2019独角兽企业重金招聘Python工程师标准>>> 学习来自<极客学院> 1 import Foundation 2 3 class User { 4 var nam ...

  2. Swift面向对象基础(中)——Swift中的方法

    1.定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数 2.方法要么属于该类型本身,要么是该类型的一个实例 3.不能独立执行方法,执行方法必须使用类型或实例作为调用者 注意: ...

  3. Swift面向对象基础(中)——Swift中的存储属性和计算属性

    1.存储属性:存储在类.结构体里的变量或者常量 2.分为:实例存储属性.类型存储属性 3.所有的存储属性必须显示的指定初始值,在定义时或者构造器当中指定 4.可选类型的存储属性可以不指定初始值 1 i ...

  4. swift面向对象之属性

    swift面向对象之属性 swift属性 存储属性 可以存储常量和变量 惰性存储属性 语法:lazy var 变量 惰性存储属性只有在用的时候才会完成真正的初始化,刚开始的初始化代码只是类型占位,并没 ...

  5. swift_031(Swift 中的枚举/原始值(RawValues))

    枚举定义语法 首先,我们来看看在 swift 中定义枚举的语法: enum WeekDay {case Mondaycase Tuesdaycase Wednesdaycase Thursdaycas ...

  6. Swift学习:基础部分(The Basics)

    Swift 是一门开发 iOS macOS watchOS  和 tvOS 应用的新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现Swift 的很多内容都是你熟悉的. ...

  7. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

  8. Swift常用基础知识(二)

    Swift常用基础知识(一) 函数式编程 函数合成 func add1(_ v1: Int, _ v2: Int) -> Int { v1 + v2 }func currying<A, B ...

  9. GitHub上Swift开源项目!

    swift-open-project 这里汇集了目前为止最为流行的Swift开源项目,选取SwiftGuide中的开源部分,这里将每周对项目进行总结,如果大家有推荐的可以联系thinkloki@gma ...

最新文章

  1. Docker存储驱动之OverlayFS简介
  2. tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法...
  3. winform第三方控件wmp
  4. 筹款の不定方程(洛谷P4956题题解,Java语言描述)
  5. 使用Tensorflow实现简单线性回归
  6. 输出图片任意点的像素坐标(结合IRFANVIEW使用)
  7. 不同角色给rules重新赋值校验规则
  8. tekla钢结构算量_吉林省中润钢结构科技有限公司应用BIM技术助力润德華城项目建设...
  9. Linux如何动态查看文件信息,怎么查看linux动态链接库文件的版本等其他信息
  10. 角动量守恒与陀螺力矩
  11. ESD问题案例分析-智能手表为例
  12. https的加密原理-SSL+TLS
  13. 802.11ac知识整合
  14. 橘子识别java_Java方法
  15. pymysql无法访问本地计算机,使用Python和odo模块在mysql上加载csv时出错
  16. 分享111个ASP源码,总有一款适合您
  17. leetcode账号手机号换绑
  18. 淘宝/天猫获得商品评论接口
  19. Java泛型方法返回值前面为什么要加上T
  20. Google Alphabet

热门文章

  1. 植物病害分类的深度可解释体系结构(github源码)
  2. upper_bound 和lower_bound彻底搞懂
  3. linux终端 打开光驱,ubuntu如何挂载光盘? Ubuntu下中手动挂载光盘的教程
  4. php把这两个二维数组合并,两个二维数组的合并
  5. android 取出list第一页数据_Android传递ListObject的用法
  6. 科大讯飞2019机械核心部件寿命预测,亚军方案
  7. Scrapy 爬取京东商城华为全系列手机评论
  8. sublime运行python代码,如何从Sublime Text 2运行Python代码?
  9. python resample_Python骚操作:利用Python获取摄像头并实时控制人脸!
  10. 分享Qt的面试题目(或许未来的我能用的上呢)