SWIFT Tuple Pattern及Struct Pattern
定义一个Tuple
let color = (1.0,1.0,1.0,1.0)
switch color{
case (0.0,0.5...1.0,let blue,_): //匹配第一个值为0.0第二个值为0.5到1.0第三四值为任意,并将第三个值传给blue变量
println("Blue is \(blue)")
case let (r,g,b,1.0) where r == g && g == b: //额外条件where 本个亦是的值要相等
println("Opaque grey \(r * 100)%")
default:
println("unkonw")
}
匹配模式混合应用,更加强大及有效,
class State{
var name:String?
var population:Double?
var abbr:String?
init(name:String,pop:Double,abbr:String){
self.name = name
self.population = pop
self.abbr = abbr
}
}
func stateFormPlist(list:Dictionary<String,AnyObject>) -> State? {
switch(list["name"],list["pupulation"],list["abbr"]){ //创建Tuple,检查要检查的元素
case (
.Some(let listName as NSString), //对应相对应位置的Tuple元素
.Some(let pop as Double),
.Some(let abbr as NSString)
) where abbr.length == 1:
return State(name: listName, pop: pop, abbr: abbr)
default:
println("b")
}
return nil
}
var mylist = ["name":"Beijing","population":20000000,"abbr":"京"]
var result = stateFormPlist(mylist)
println(result?.abbr) //京
println(result?.name) //Beijing
println(result?.population) //20000000
元祖就说完了,接下来定义一个Struct
struct Color {
var red:Double?
var green:Double?
var blue:Double?
var alpha:Double?
init(red:Double,green:Double,blue:Double,alpha:Double){
self.red = red
self.green = green
self.blue = blue
self.alpha = alpha
}
}
var mycolor = Color(red: 10, green: 20, blue: 60, alpha: 1.0)
switch mycolor{
case let a where a.red == 10 && a.blue == 60:
println("yes")
default:
println("unkonw")
}
使用下划线(_)忽略部分数值:
var loginResult = (true, "Login Success")
let (isLoginSuccess,_) = loginResult
if isLoginSuccess {
println("登录成功")
println(loginResult.0) //访问Tuple中的第一项
println(loginResult.1) //访问Tuple中的第二项
}
最新文章
- 用于后台管理的列表数据控件:DataGrid和Select
- angularjs 1.x $q模块使用
- C#多线程学习笔记
- BZOJ4004: [JLOI2015]装备购买
- SQLite常用网址
- *** 安全沙箱冲突 *** 到 127.0.0.1:9999 的连接已停止 - 不允许从 file:///E:/flash/Flash/Vod/tag/Letvcloud__MainVodNew/bin-debug/Player.swf 进行连接
- POJ 4046 Sightseeing 枚举+最短路 好题
- XACML-<;Target>; 元素的结构与相关的评估
- JAX-RS 2.0 REST客户端编程实例
- QtSQL学习笔记(2)- 连接到数据库
- 正确设置网站title、keywords、description(转载)
- C# winform 实现 qq 在屏幕边缘 自动隐藏 鼠标移过去 移上去 又自动显示
- Python 面向对象基础知识
- JaveScript内置对象(JS知识点归纳八)
- 前端页面使用emoji
- 【洛谷P4180】严格次小生成树
- linux抓包命令之tcpdump
- Step4:SQL Server 跨网段(跨机房)复制
- sea.js模块化工具
- UVA 1593 Alignment of Code(紫书习题5-1 字符串流)
热门文章
- UOJ 171 【WC2016】挑战NPC
- HTML5-form表单
- [STL][C++]LIST
- sql一些语句性能及开销优化
- Python使用base64编码的问题
- English trip -- VC(情景课)9 B Outside chores 室外家务
- 3-5 回顾,快速二分法的疑点解惑:为啥先右j移动?因为设定a[left]为基准点
- 安装 tensorflow 时遇到 OSError: [Errno 1] Operation not permitted 的解决办法
- ansible-playbook快速入门填坑
- PowerDesigner16工具学习笔记-工具介绍