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. 存储过程使用表变量或临时表代替游标Fetch实例,访问远程数据库

    定义表变量是可以直接操作在内存中的数据,比较快.临时表在大数据量时会比游标使用的资源少.还是要看具体情况了.也有可能在实际优化过程中相互替换呢. 留作记忆的代码如下: if object_id('te ...

  2. 基于VMware的eCos环境编译redboot(脚本配置redboot)

    基于VMware的ecos,redboot及hello world(1)安装请参照[[ecos学习2]wmware运行redboot[方法二]--图形实现配置 ] (2)修改内存布局文件:~/i386 ...

  3. nginx和apache的优缺点比较

    简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题.apache httpd:稳定.对动态请求处理强,但同时高并发时性能较弱,耗费资源多 ...

  4. 连接postgresql数据库

    初装postgresql数据库会产生默认的数据库用户postgres和同名的数据库.但是我的linux用户是jm,两者不一致,连不上数据库.于是先把linux用户切换为postgres.(数据库会为l ...

  5. Eclipse 安装使用 Maven

    安装 Maven 下载 Maven  http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9 ...

  6. ffmpeg参数解释 <第三篇>

    例子:ffmpeg -y -i "1.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 -b 1500 - ...

  7. Linux系统编程(16)——正则表达式入门

    字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等等.字符串是0个或更多个字符的序列.文本也就是文字,字符串.说某个字符串匹配某个正则表达式,通常是指这个字符串里 ...

  8. cf471B MUH and Important Things

    B. MUH and Important Things time limit per test 1 second memory limit per test 256 megabytes input s ...

  9. 用日志文件备份sqlserver

    USE [TestDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO )) as ) ),),)),)+ '.bak' backup dat ...

  10. windows套接字相关函数

    windows套接字相关函数 作者:vpoet mail:vpoet_sir@163.com 我们学习TCP/IP协议无非是利用这些协议进行通信开发,然而如果让我们自己来直接根据协议规则和协议格式来进 ...