定义一个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的更多相关文章

  1. [Design Pattern] Service Locator Pattern 简单案例

    Service Locator Pattern,即服务定位模式,用于定位不同的服务.考虑到 InitialContext::lookup 的成本比较高,提供了 Cache 类缓存以定位到的服务. 代码 ...

  2. [Design Pattern] Front Controller Pattern 简单案例

    Front Controller Pattern, 即前端控制器模式,用于集中化用户请求,使得所有请求都经过同一个前端控制器处理,处理内容有身份验证.权限验证.记录和追踪请求等,处理后再交由分发器把请 ...

  3. Handle/Body pattern(Wrapper pattern)

    Handle Body Pattern 一些设计模式,通过一系列非直接的间接的方式(这种间接的方式,可称其为 handle(把手)),完成接口与实现(实现可称为 body(主体))的分离 Handle ...

  4. [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  ...

  5. [Swift]LeetCode290. 单词模式 | Word Pattern

    Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...

  6. 窥探Swift之别具一格的Struct和Class

    说到结构体和类,还是那句话,只要是接触过编程的小伙伴们对这两者并不陌生.但在Swift中的Struct和Class也有着令人眼前一亮的特性.Struct的功能变得更为强大,Class变的更为灵活.St ...

  7. Pattern Design - Strategy Pattern

    If you can disassemble code  and  you want to apply one method of an object in another object that t ...

  8. 窥探 Swift 之别具一格的 Struct 和 Class

    说到结构体和类,还是那句话,只要是接触过编程的小伙伴们对这两者并不陌生.但在Swift中的Struct和Class也有着令人眼前一亮的特性.Struct的功能变得更为强大,Class变的更为灵活.St ...

  9. 【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 ...

随机推荐

  1. go 修改字符串

    在Go中字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[] var s string = "hello" s[] = 'c' 但如果真的想要修改 ...

  2. nginx常用命令汇总

    nginx基础命令: sudo nginx // 开启nginx服务器 sudo nginx -s reload // 重启nginx服务器 sudo nginx -s stop // 关闭nginx ...

  3. putty xming gnome-session

    在windows里远程连接linux的最好方法. 比VNC方式好多了 1) xming启动一个窗口 2) putty 设置完X11 forwarding之后,远程登录 3) 在putty 里启动 gn ...

  4. 20170727xlVBA根据数据表和模板工作簿生成个人明细表工作簿

    Sub CreateTables() Dim Wb As Workbook Dim OpenWb As Workbook Dim Sht As Worksheet Dim Rng As Range D ...

  5. Vue.js 渲染函数, JSX(未掌握,未学完)

    渲染函数 , JSX(没完成学习) 基础: 实例属性:vm.$slots default 属性包括了所有没有被包含在具名插槽中的节点. 渲染函数: render: function(createEle ...

  6. Multi-target tracking by Lagrangian relaxation to min-cost network flow

    Multi-target tracking by Lagrangian relaxation to min-cost network flow high-order constraints min-c ...

  7. python-day27--hashlib模块-摘要算法

    1.用途: # 文件校验 # 文件是否被改变# 登录密码 #不能解密,但可以“撞库” #加盐 hashlib.md5('nezha'.encode('utf-8')) 2. import hashli ...

  8. CF-499div2-E-裴蜀定理

    E. Border time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  9. Oracle12c中性能优化增强新特性之数据库智能闪存

    智能闪存功能最初在XD中引入.从Oracle11.2.0.2开始,除了用于XD存储,还可用于任何闪盘.Oracle12c中,不需卷管理器就可以使用闪盘. 1.  简介 智能闪存在solaris和lin ...

  10. PHP:第二章——PHP中的equire与incude语句

    <?php header("Content-Type:text/html;charset=utf-8"); /* include: include_once//include ...