初学swift笔记 枚举(七)
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笔记 枚举(七)的更多相关文章
- 初学swift笔记 结构体(八)
import Foundation /* 和类很相似 结构体 -> 封装 属性.方法 结构体是值类型 */ //定义一个LSQ类型的结构体 关键字struct struct LSQ { var ...
- 初学swift笔记 方法(九)
import Foundation /* 方法 */ //实例方法 一定需要依附于对象 class MyPoint { var x: Double = 0.0 var y: Double = 0.0 ...
- 初学swift笔记-数组、字典、元组(三)
数组的使用.字典的使用.元组的使用 import Foundation //1.定义数组 //集合数据 数组.字典 ,,,]//常用定义 ,,,]//常用定义 ,,,]//范型定义 ,,,] arr_ ...
- 初学swift笔记运算符(二)
swift 中的运算符 import Foundation //字符类型 var char: Character = "a" char="b" println( ...
- 初学swift笔记变量的定义(一)
swift变量的定义 1 import Foundation /* 变量的定义 变量的类型是可以不用写的 var a=10 常量的定义 let修饰 */ print(a) let b= print(b ...
- 初学swift笔记 继承(十)
import Foundation /* 继承 class childClass: FatherClass{ } 优点 代码重用 缺点 增加程序的藕合度 父类的改变会影响子类 只能单继承 */ cla ...
- 初学swift笔记 函数(六)
import Foundation /* func 函数名 (参数名:参数类型) { } func 函数名 (参数名:参数类型) ->Void{ } func 函数名 (参数名:参数类型) -& ...
- 初学swift笔记 流程控制(五)
import Foundation ; i<=; i++ { println(i) } let str1="adl;fjasdfl;ouewrouqwperuadf" for ...
- 初学swift笔记字典、数组(四)
import Foundation //字典 元素顺序是无序的 //1.字典元素是键值对 (key:value) //key 一定是可哈希的 string\int\bool var dic1=[&qu ...
随机推荐
- Common-logging 与 Log4j的结合使用
分类: Java 一.结合说明 在我们的日常开发中,经常需要通过输出一些信息进行程序的调试,如果到处都用system.out.println()则在项目发布之后要逐一删除,而log4j提供了一种新的调 ...
- sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的 ...
- Android Service 通过 BroadcastReceiver 更新Activity UI
1:MainActivity.java public class MainActivity extends Activity { private TextView tvInfo = null; pri ...
- TENX_ASM.uew
/L14"TENX ASM" Nocase Line Comment = ; File Extensions = INC ASM LST H /Colors = ,,,,, /Co ...
- CEF3 怎样禁止右键菜单
CEF3 怎样禁止右键菜单 (2013-07-30 11:56:34)转载▼标签: cef3 右键菜单 分类: CEF3问题描述:CEF3 嵌入成功后,在网页点鼠标右键,出现英文菜单,应该怎样禁止掉呢 ...
- Linux下ld搜索问题:ld: cannot find -l"XX"
ld命令行工具(链接库的一个工具)的搜索路径是-L指定的,库名是-l指定的. 比如: ld -L[dir] -l[mylib] --verbose 以上我用可视化的方法显示ld的搜索路径,其结果是居然 ...
- grep搜索当前目录和递归搜索子目录中文本文件的特定pattern
一般在windows上文本编辑器notepad++,UE这些都有这些功能,Linux下就换了一种方式,用grep来完成文件中信息查找的方式. grep -R -n --include="*. ...
- 非常棒的Java REST服务器栈
Dropwizard 是一个开源的Java框架,用于开发OPS友好.高性能的基于REST的后端.它是由Yammer开发的,来驱动基于JVM的后端. Dropwizard提供同类最佳的Java库到一个嵌 ...
- 【排序】表插入排序算法(C语言版)
排序耗时的操作主要分为两种:查找比较.记录移位. 1.表插入排序 在查找比较基础上,尽量减少记录移位步数,可以令排序操作耗时降低,表插入排序正是为减少移位次数而出现的. 在数据结构上,数据是存储在静态 ...
- 在 ASP.NET MVC 项目中使用 WebForm、 HTML
原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...