import Foundation

 /*
枚举 语法结构
enum 类型 {
case 值
}
*/
//定义一个枚举 写法1
enum LiuShiQun {
case Name
case Age
case Sex
case Add
case Sub
case Mul
case Div
}
//定义一个枚举 写法2
enum LiuShiQun_1 {
case Add,Sub
case Mul
case Div
}
//定义一个枚举变量 写法1
let enum_Name: LiuShiQun = .Name
//定义一个枚举变量 写法2
let enum_Age: LiuShiQun = LiuShiQun.Age
// 定义枚举变量 写法3
let enum_Add = LiuShiQun_1.Add //与switch结合 将闭包的各种方式加入到方法里
//匹配的时候,如果不将枚举对所有值都case出来,switch会报错 否则末尾添加default
func chooseMethod(op: LiuShiQun_1) ->(Double,Double) -> Double {
switch op {
case .Add:
func add(a: Double,b: Double) -> Double {
return a+b
}
return add
case .Sub:
return {(a: Double,b: Double) -> Double in return a - b}
case .Mul:
return {return $ * $}
case .Div:
return {$ / $}
default :
return{$ + $}
}
}
//声明一个对象 调用方法,传递枚举的值 得到一个闭包类型的值
let val_1 = chooseMethod(.Mul)
//调用val_1闭包
let value_2 = val_1(,)
println(value_2) /*
枚举原始值定义
enum Lsq: Int {
case Add,Sub,Mul,Div
}
不指定值的话,从0开始,依次 +1
Lsq.Add.toRaw() 得到Lsq.Add的原始值 - 对应 fromRaw 将值反推 将原始值转为枚举值
Lsq.Add.rawValue 得到Lsq.Add的原始值 enum Lsq_1: Int {
case Add=0,Sub=1,Mul=3,Div=4
} enum Lsq_2: String {
case Add="add",Sub="sub",Mul="mul",Div="div"
}
*/ enum Lsq_1: Int {
case Add=,Sub,Mul,Div
}
println(Lsq_1.Add.rawValue)
enum Lsq_2: String {
case Add="add",Sub="sub",Mul="mul",Div="div"
}
println(Lsq_2.Add.rawValue) let op : Lsq_2? = Lsq_2(rawValue: "add")
println(op)
//字符串转枚举值
func get_enums(str: String) {
let new_op : Lsq_2? = Lsq_2(rawValue: str)
if var temp_op = new_op {
switch temp_op {
case .Add:
println("Add")
case .Div:
println("Div")
case .Mul:
println("Mul")
case .Sub:
println("Sub")
default :
println("error: \(str)")
}
}
else {
println("no")
}
}
get_enums("adds") //枚举相关值
//两个值关联枚举值
enum LineSegmentDescriptor {
case StartAndEndPattern(start : Double,end : Double)
case StartAndLengPattern(start : Double,length : Double)
}
//定义一个变量 指定枚举值的两个关联值
var lsd = LineSegmentDescriptor.StartAndEndPattern(start: , end: )
lsd = LineSegmentDescriptor.StartAndLengPattern(start: , length: )
//将值提取出来
switch lsd {
//case let .StartAndEndPattern( s, e)://switch 值绑定模式
case .StartAndEndPattern(let s,let e)://switch 值绑定模式
println("开始\(s) 结束\(e)")
case .StartAndLengPattern(let s,let e)://switch 值绑定模式
println("开始\(s) 结束\(e)")
}
 

初学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. juqery合成事件toggle方法

    当指定元素被点击时,在两个或多个函数之间轮流切换. 如果规定了两个以上的函数,则 toggle() 方法将切换所有函数.例如,如果存在三个函数,则第一次点击将调用第一个函数,第二次点击调用第二个函数, ...

  2. js 事件小结

    1,事件对象   e || window.event //ie   2, 取鼠标点击坐标 带有滚动条的   var top = document.documentElement.scrollTop | ...

  3. 函数stripslashes去除转义 shopnc 搜索框过滤特殊字符 输入单斜杆会自动转义

    如何php是如何处理和过滤特殊字符的呢? 搜索%_显示所有商品:搜索\会在搜索框内叠加\\ 查了一下 magic_quotes_sybase 项开启,反斜线将被去除,但是两个反斜线将会被替换成一个. ...

  4. [原]此程序专用来说明C++模板的用法

    #include using namespace std; //此程序专用来说明模版的使用 template void swap1(T& a,T& b){     T temp=a; ...

  5. re模块

    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能 ...

  6. python连接postgresql数据库

    python可以通过第三方模块连接postgresql. 比较有名的有psycopg2  和python3-postgresql (一)psycopg2 ubuntu下安装 sudo apt-get ...

  7. 电子工程师名片——SPI NOR Flash

    使用了MX25L512的SPI接口的Flash 电路连接图: 总的大小512kb,即64kB,sector的大小为256 Bytes,block的大小为4k Bytes 调试时出现的问题: 1.Fla ...

  8. C# Assembly类_反射

    System.Reflection.Assembly类是一个比较常用到的类,在反射中就经常用到. 由于这个类实在有太多的字段.属性与方法.实在不想将一个个属性方法从MSDN复制出来然后逐个属性.方法敲 ...

  9. Linux下的摄影后期处理软件

    由于喜欢摄影,在LInux上折腾,想找一款能代替lightroom的软件.发现darktable这款软件专业.于是就安装了. 以下是在Linux上安装darktable的instruction,需要添 ...

  10. linux命令行常用快捷键

    方向          <-前               后 ->删除ctrl + d      删除光标所在位置上的字符相当于VIM里x或者dlctrl + h      删除光标所在 ...