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. Asp.Net MVC+EF+三层架构的完整搭建过程

    架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案下,新建解决方案文件夹(UI,BLL,DAL,Model) ...

  2. iOS开发之OC篇-响应式编程Reactive Cocoa

    一.Reactive Cocoa 介绍 Reactive Cocoa 是 iOS 开发的一个 "重量级" 框架 高大上的概念:响应式编程 核心概念:信号 Signal 官方网站:h ...

  3. jQuery中$.proxy()的原理和使用

    jQuery.proxy(),接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境. jQuery.proxy( function, context ) fu ...

  4. Qt中调用PolarSSL库(一)

    最近一直在学习SSL相关的知识,也是先了解理论相关的知识,主要是SSL相关的基本概念和连接建立过程,主要是基于PolarSSL开源库进行学习.学习完了之后就希望能给有所运用,就想用Qt写一个简单的程序 ...

  5. HttpApplication实战大文件上传 (第四篇)

    一.Asp.net中的文件上传 在Asp.net 1.1中,文件在上传过程中将被全部保存在内存中,对于大文件来说,会造成内存空间的过度使用,可能会招致恶意攻击.为了解决这个问题,Asp.net在配置文 ...

  6. 开源欣赏wordpress之用户新增user-new.php

    require_once( dirname( __FILE__ ) . '/admin.php' ); 引入根文件. if ( is_multisite() ) { if ( ! current_us ...

  7. PHP MySQL Delete From 之 Delete

    删除数据库中的数据 DELETE FROM 语句用于从数据库表中删除记录. 语法 DELETE FROM table_name WHERE column_name = some_value 注释:SQ ...

  8. UGUI Scrollbar控件

    如题就是Scrollbar控件,它简单可以看成 Scrollbar 和 Image组件组成 它基本上不单独使用多数是制作滚动视图.我们来看看他独特的属性,重复的属性就不在介绍了! 属性讲解: Hand ...

  9. C# Lazy<T>(转)

    本文来自:http://www.cnblogs.com/zhangpengshou/archive/2012/12/10/2811765.html .NET Framework 4 在一次次跳票中终于 ...

  10. FP-Growth算法之频繁项集的挖掘(python)

    前言: 关于 FP-Growth 算法介绍请见:FP-Growth算法的介绍. 本文主要介绍从 FP-tree 中提取频繁项集的算法.关于伪代码请查看上面的文章. FP-tree 的构造请见:FP-G ...