初学swift笔记 枚举(七)

  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 $0 * $1}
 47     case .Div:
 48             return {$0 / $1}
 49     default :
 50         return{$0 + $1}
 51     }
 52 }
 53 //声明一个对象 调用方法,传递枚举的值 得到一个闭包类型的值
 54  let val_1 = chooseMethod(.Mul)
 55 //调用val_1闭包
 56 let value_2 = val_1(4,7)
 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
 69 enum Lsq_1: Int {
 70 case Add=0,Sub=1,Mul=3,Div=4
 71 }
 72
 73 enum Lsq_2: String {
 74 case Add="add",Sub="sub",Mul="mul",Div="div"
 75 }
 76 */
 77
 78 enum Lsq_1: Int {
 79     case Add=0,Sub,Mul,Div
 80 }
 81 println(Lsq_1.Add.rawValue)
 82 enum Lsq_2: String {
 83     case Add="add",Sub="sub",Mul="mul",Div="div"
 84 }
 85 println(Lsq_2.Add.rawValue)
 86
 87 let op : Lsq_2? = Lsq_2(rawValue: "add")
 88 println(op)
 89 //字符串转枚举值
 90 func get_enums(str: String) {
 91     let new_op : Lsq_2? = Lsq_2(rawValue: str)
 92     if var temp_op = new_op {
 93         switch temp_op {
 94         case .Add:
 95             println("Add")
 96         case .Div:
 97             println("Div")
 98         case .Mul:
 99             println("Mul")
100         case .Sub:
101             println("Sub")
102         default :
103             println("error: \(str)")
104         }
105     }
106     else {
107         println("no")
108     }
109 }
110 get_enums("adds")
111
112 //枚举相关值
113 //两个值关联枚举值
114 enum LineSegmentDescriptor {
115     case StartAndEndPattern(start : Double,end : Double)
116     case StartAndLengPattern(start : Double,length : Double)
117 }
118 //定义一个变量 指定枚举值的两个关联值
119 var lsd = LineSegmentDescriptor.StartAndEndPattern(start: 1, end: 10)
120 lsd = LineSegmentDescriptor.StartAndLengPattern(start: 1, length: 9)
121 //将值提取出来
122 switch lsd {
123 //case let .StartAndEndPattern( s, e)://switch 值绑定模式
124 case .StartAndEndPattern(let s,let e)://switch 值绑定模式
125     println("开始\(s) 结束\(e)")
126 case .StartAndLengPattern(let s,let e)://switch 值绑定模式
127     println("开始\(s) 结束\(e)")
128 }
时间: 2024-11-06 07:07:36

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

swift笔记- 枚举

枚举是一系列相关值的通用类型,是类型安全的. Swift中的枚举不需要为每一个成员赋值,而成员的值可以是 字符串 字符 或者人意的整数或浮点值. 枚举成员可以指定任何存储成员值类型的关联值enumeration members can specify associated values of any type to be stored along with each different member value.枚举成员可以是相关的成员集合,而每个成员也可以是一个单独的小集合. 枚举跟传统的类结

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

swift变量的定义 1 import Foundation 2 3 /* 4 变量的定义 5 变量的类型是可以不用写的 6 var a=10 7 常量的定义 let修饰 8 */ 9 10 var a=10 11 print(a) 12 let b=11 13 print(b) 14 15 /* 16 类型标注 17 指定变量的类型 :[空格]首字母大写 18 */ 19 var x: Int 20 x=9 21 print(x) 22 let y: Int=10 23 print(y) 24

初学swift笔记运算符(二)

swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println(char) var str:String str="abcceadfasdfl;jk\0dfaaaa 0001496" println(str) //查看长度 countElements 返回的元素个数 println(countElements(str)) var str1="

初学swift笔记 函数(六)

1 import Foundation 2 /* 3 func 函数名 (参数名:参数类型) { 4 5 } 6 func 函数名 (参数名:参数类型) ->Void{ 7 8 } 9 func 函数名 (参数名:参数类型) ->返回类型{ 10 11 } 12 */ 13 func show_Array(tempArray: [Int]){ 14 for a in tempArray { 15 println("\(a)") 16 } 17 18 } 19 func sh

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

1 import Foundation 2 //字典 元素顺序是无序的 3 //1.字典元素是键值对 (key:value) 4 //key 一定是可哈希的 string\int\bool 5 var dic1=["name":"lsq"] 6 println(dic1["name"]) 7 //完整的定义方式 8 var dic2: Dictionary<String,Any>=["a":1,"b&qu

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

1 import Foundation 2 3 for var i=1; i<=10; i++ { 4 println(i) 5 } 6 7 let str1="adl;fjasdfl;ouewrouqwperuadf" 8 for c in str1 { 9 switch c { 10 case "a","f","o": 11 println(c) 12 13 default: 14 var t=""

Swift学习笔记-枚举(Enumerations)

本页内容包含: 枚举语法(Enumeration Syntax) 匹配枚举值与Swith语句(Matching Enumeration Values with a Switch Statement) 相关值(Associated Values) 原始值(Raw Values) 递归枚举(Recursive Enumerations) 枚举定义了一个通用类型的一组相关值,使你可以在你的代码中以一种安全的方式来使用这些值. 如果你熟悉 C 语言,你就会知道,在 C 语言中枚举将枚举名和一个整型值相对

Swift中文教程(七)--协议,扩展和泛型

Protocols and Extensions 协议(接口)和扩展 Swift使用关键字protocol声明一个协议(接口): 类(classes),枚举(enumerations)和结构(structs)都可采用协议(protocol): 1 class SimpleClass: ExampleProtocol { 2 var simpleDescription: String = "A very simple class." 3 var anotherProperty: Int

swift 笔记 (十四) —— 构造过程

构造过程 为了生成类.结构体.枚举等的实例,而做的准备过程,叫做构造过程. 为了这个过程,我们通常会定义一个方法来完成,这个方法叫做构造器.当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作以及一此自定义化的处理. 为存储型属性设置初始值 类和结构体在生成实例那一刻,必须为所有的属性赋以特定的初始值. 要么在定义存储型属性的时候直接给个初始值,否则就必须在构造器里面指定一个初始值. 上面说的这两种情况,都不会触发存储型属性的监听者行为(property observer). struc