1. import Foundation
  2.  
  3. /*
  4. 枚举
  5.  
  6. 语法结构
  7. enum 类型 {
  8. case 值
  9. }
  10. */
  11. //定义一个枚举 写法1
  12. enum LiuShiQun {
  13. case Name
  14. case Age
  15. case Sex
  16. case Add
  17. case Sub
  18. case Mul
  19. case Div
  20. }
  21. //定义一个枚举 写法2
  22. enum LiuShiQun_1 {
  23. case Add,Sub
  24. case Mul
  25. case Div
  26. }
  27. //定义一个枚举变量 写法1
  28. let enum_Name: LiuShiQun = .Name
  29. //定义一个枚举变量 写法2
  30. let enum_Age: LiuShiQun = LiuShiQun.Age
  31. // 定义枚举变量 写法3
  32. let enum_Add = LiuShiQun_1.Add
  33.  
  34. //与switch结合 将闭包的各种方式加入到方法里
  35. //匹配的时候,如果不将枚举对所有值都case出来,switch会报错 否则末尾添加default
  36. func chooseMethod(op: LiuShiQun_1) ->(Double,Double) -> Double {
  37. switch op {
  38. case .Add:
  39. func add(a: Double,b: Double) -> Double {
  40. return a+b
  41. }
  42. return add
  43. case .Sub:
  44. return {(a: Double,b: Double) -> Double in return a - b}
  45. case .Mul:
  46. return {return $ * $}
  47. case .Div:
  48. return {$ / $}
  49. default :
  50. return{$ + $}
  51. }
  52. }
  53. //声明一个对象 调用方法,传递枚举的值 得到一个闭包类型的值
  54. let val_1 = chooseMethod(.Mul)
  55. //调用val_1闭包
  56. let value_2 = val_1(,)
  57. println(value_2)
  58.  
  59. /*
  60. 枚举原始值定义
  61. enum Lsq: Int {
  62. case Add,Sub,Mul,Div
  63. }
  64. 不指定值的话,从0开始,依次 +1
  65. Lsq.Add.toRaw() 得到Lsq.Add的原始值 - 对应 fromRaw 将值反推 将原始值转为枚举值
  66. Lsq.Add.rawValue 得到Lsq.Add的原始值
  67.  
  68. enum Lsq_1: Int {
  69. case Add=0,Sub=1,Mul=3,Div=4
  70. }
  71.  
  72. enum Lsq_2: String {
  73. case Add="add",Sub="sub",Mul="mul",Div="div"
  74. }
  75. */
  76.  
  77. enum Lsq_1: Int {
  78. case Add=,Sub,Mul,Div
  79. }
  80. println(Lsq_1.Add.rawValue)
  81. enum Lsq_2: String {
  82. case Add="add",Sub="sub",Mul="mul",Div="div"
  83. }
  84. println(Lsq_2.Add.rawValue)
  85.  
  86. let op : Lsq_2? = Lsq_2(rawValue: "add")
  87. println(op)
  88. //字符串转枚举值
  89. func get_enums(str: String) {
  90. let new_op : Lsq_2? = Lsq_2(rawValue: str)
  91. if var temp_op = new_op {
  92. switch temp_op {
  93. case .Add:
  94. println("Add")
  95. case .Div:
  96. println("Div")
  97. case .Mul:
  98. println("Mul")
  99. case .Sub:
  100. println("Sub")
  101. default :
  102. println("error: \(str)")
  103. }
  104. }
  105. else {
  106. println("no")
  107. }
  108. }
  109. get_enums("adds")
  110.  
  111. //枚举相关值
  112. //两个值关联枚举值
  113. enum LineSegmentDescriptor {
  114. case StartAndEndPattern(start : Double,end : Double)
  115. case StartAndLengPattern(start : Double,length : Double)
  116. }
  117. //定义一个变量 指定枚举值的两个关联值
  118. var lsd = LineSegmentDescriptor.StartAndEndPattern(start: , end: )
  119. lsd = LineSegmentDescriptor.StartAndLengPattern(start: , length: )
  120. //将值提取出来
  121. switch lsd {
  122. //case let .StartAndEndPattern( s, e)://switch 值绑定模式
  123. case .StartAndEndPattern(let s,let e)://switch 值绑定模式
  124. println("开始\(s) 结束\(e)")
  125. case .StartAndLengPattern(let s,let e)://switch 值绑定模式
  126. println("开始\(s) 结束\(e)")
  127. }
 

初学swift笔记 枚举(七)的更多相关文章

  1. 初学swift笔记 结构体(八)

    import Foundation /* 和类很相似 结构体 -> 封装 属性.方法 结构体是值类型 */ //定义一个LSQ类型的结构体 关键字struct struct LSQ { var ...

  2. 初学swift笔记 方法(九)

    import Foundation /* 方法 */ //实例方法 一定需要依附于对象 class MyPoint { var x: Double = 0.0 var y: Double = 0.0 ...

  3. 初学swift笔记-数组、字典、元组(三)

    数组的使用.字典的使用.元组的使用 import Foundation //1.定义数组 //集合数据 数组.字典 ,,,]//常用定义 ,,,]//常用定义 ,,,]//范型定义 ,,,] arr_ ...

  4. 初学swift笔记运算符(二)

    swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println( ...

  5. 初学swift笔记变量的定义(一)

    swift变量的定义 1 import Foundation /* 变量的定义 变量的类型是可以不用写的 var a=10 常量的定义 let修饰 */ print(a) let b= print(b ...

  6. 初学swift笔记 继承(十)

    import Foundation /* 继承 class childClass: FatherClass{ } 优点 代码重用 缺点 增加程序的藕合度 父类的改变会影响子类 只能单继承 */ cla ...

  7. 初学swift笔记 函数(六)

    import Foundation /* func 函数名 (参数名:参数类型) { } func 函数名 (参数名:参数类型) ->Void{ } func 函数名 (参数名:参数类型) -& ...

  8. 初学swift笔记 流程控制(五)

    import Foundation ; i<=; i++ { println(i) } let str1="adl;fjasdfl;ouewrouqwperuadf" for ...

  9. 初学swift笔记字典、数组(四)

    import Foundation //字典 元素顺序是无序的 //1.字典元素是键值对 (key:value) //key 一定是可哈希的 string\int\bool var dic1=[&qu ...

随机推荐

  1. django获取某一个字段的列表,values/values_list/flat

    class Building(models.Model): corporation = models.ForeignKey('company.Corporation', verbose_name=u' ...

  2. postgresql创建用户

    (1)内部命令create user 用户名 with superuser password '密码';              先进入数据库后用命令\h create user 查看帮助     ...

  3. asp.net笔记

    1.  复习 a)         WebForm前后台页面(aspx, aspx.cs)文件在被访问时,会被编译成类,前台类继承于后台类 b)         被访问时,服务器会创建[前台页面类]对 ...

  4. SQL查询 addScalar()或addEntity()

    Hibernate除了支持HQL查询外,还支持原生SQL查询.   对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该 ...

  5. BZOJ 3572 世界树(虚树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3572 思路:建立虚树,然后可以发现,每条边不是同归属于一端,那就是切开,一半给上面,一半给下面. # ...

  6. WebSocket C# Demo

    WebSocket 规范 WebSocket 协议本质上是一个基于 TCP 的协议.为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTT ...

  7. SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装

          刚开始接触sql,于是准备在Ubuntu下学习sql,就跟着itercast的sql教程开始入门了. 下面只是我个人的记录,高手请绕道: 一. 在安装之前,我们可以用下面这个命令通过开放端 ...

  8. javaWeb Cache技术――OSCache(转-全)

    什么是osCache? 它是:http://baike.baidu.com/view/1835163.htm?fr=aladdin OSCache使用指南 一.下载安装 OSCache是一个基于web ...

  9. 如何导出sqlserver中的表数据,sqlserver2008

    sqlserver数据库中的表数据,我们通常想使用一下,可是怎样获取这些数据呢? 1.选择任务->生成脚本 2.选择数据库 3.设置配置,让编写数据的脚本为true 4.保存为sql 5.完成 ...

  10. 用于下载AD官网登录账号:User name: fuxin918@fuxin918.com Passeword: s6c0W1w8

    用于下载AD官网登录账号:User name: fuxin918@fuxin918.com Passeword:  s6c0W1w8