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中的第二项
}
SWIFT Tuple Pattern及Struct Pattern的更多相关文章
- [Design Pattern] Service Locator Pattern 简单案例
Service Locator Pattern,即服务定位模式,用于定位不同的服务.考虑到 InitialContext::lookup 的成本比较高,提供了 Cache 类缓存以定位到的服务. 代码 ...
- [Design Pattern] Front Controller Pattern 简单案例
Front Controller Pattern, 即前端控制器模式,用于集中化用户请求,使得所有请求都经过同一个前端控制器处理,处理内容有身份验证.权限验证.记录和追踪请求等,处理后再交由分发器把请 ...
- Handle/Body pattern(Wrapper pattern)
Handle Body Pattern 一些设计模式,通过一系列非直接的间接的方式(这种间接的方式,可称其为 handle(把手)),完成接口与实现(实现可称为 body(主体))的分离 Handle ...
- [Swift]LeetCode456. 132模式 | 132 Pattern
Given a sequence of n integers a1, a2, ..., an, a 132 pattern is a subsequence ai, aj, ak such that ...
- [Swift]LeetCode290. 单词模式 | Word Pattern
Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...
- 窥探Swift之别具一格的Struct和Class
说到结构体和类,还是那句话,只要是接触过编程的小伙伴们对这两者并不陌生.但在Swift中的Struct和Class也有着令人眼前一亮的特性.Struct的功能变得更为强大,Class变的更为灵活.St ...
- Pattern Design - Strategy Pattern
If you can disassemble code and you want to apply one method of an object in another object that t ...
- 窥探 Swift 之别具一格的 Struct 和 Class
说到结构体和类,还是那句话,只要是接触过编程的小伙伴们对这两者并不陌生.但在Swift中的Struct和Class也有着令人眼前一亮的特性.Struct的功能变得更为强大,Class变的更为灵活.St ...
- 【Pattern】-NO.150.Pattern.1 -【Pattern UML】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
随机推荐
- jQuery.page 分页控件
分享一下自己在项目中引用的Jquery分页控件 index.html内容 <!DOCTYPE html> <html lang="zh-cn" xmlns=&qu ...
- 性能测试 tps持续走低,响应时间持续增加,瓶颈分析
吞吐量图如上 响应时间图如上 自身压测的机器,资源使用率并没有饱和 服务器,top命令下看到load average的值很低,本身是4核的server. 每个核的CPU使用率也极低,空闲cpu占95+ ...
- [STL][C++]LIST
参考:http://blog.csdn.net/whz_zb/article/details/6831817 list是双向循环链表,,每一个元素都知道前面一个元素和后面一个元素.在STL中,list ...
- Codeforces 839B - Game of the Rows
839B - Game of the Rows 思路:先放4个的,然后再放2个的,最后再放1个的. 代码: #include<bits/stdc++.h> using namespace ...
- windows7 asp.net发布IIS 拒绝访问 解决方法
在windows7中打开DNN网站有以下问题: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP ...
- ZendFramework中实现自动加载models
最近自学Zendframework中,写Controller的时候总要require model下的类文件,然后才能实例化,感觉非常不爽 Google了许久,找到个明白人写的方法不错,主要就是修改ap ...
- Yii中的CComponent应用实例
首先我们先了解一下如何创建一个CComponent,手册讲述如下: CComponent 是所有组件类的基类. CComponent 实现了定义.使用属性和事件的协议. 属性是通过getter方法或/ ...
- C# 导出HTML为Excel
最近在项目中需要Excel导出,有多个Sheet页,每个Sheet页的内容比较多,且不是规整的表格,绑定值是个比较麻烦的事,便考虑直接将HTML转换为Excel文件进行导出. 一.使用JS方法将HTM ...
- P4173 残缺的字符串 fft
题意:给你两个字符串,问你第一个在第二个中出现过多少次,并输出位置,匹配时是模糊匹配*可和任意一个字符匹配 题解:fft加速字符串匹配; 假设上面的串是s,s长度为m,下面的串是p,p长度为n,先考虑 ...
- Oracle11g温习-第六章:控制文件
2013年4月27日 星期六 10:33 .控制文件的功能和特点 1) [定义数据库当前物理状态] 2) [维护数据的一致性] 如果控制文件中的检查点与数据文件中的一致,则说明数据一致,可以启动到 ...