定义一个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. mysql 对比两个表的一致性

    -- A和B两个表 数据是否一致select 自定义 from A left join B on A.id = B.id where B.id is null 注释:这样查询的结果是A表中有而B表中没 ...

  2. Ubuntu16.04 安装 Django

    pip2 install django==1.11 或者手动安装: 链接:https://pan.baidu.com/s/1uQJD-pON7gELoCC2TwYnEw 提取码:flgg cd Dja ...

  3. django用包来组织模型

    在我们使用python manage.py startapp xxx命令创建新的应用时,Django会自动帮我们建立一个应用的基本文件组织结构,其中就包括一个models.py文件.通常,我们把当前应 ...

  4. STL__容器的分类

    1.序列式 vector.deque.list 2.关联式 set.multiset.map.multimap 3. ZC: queue.stack 属于什么类型?序列式? 4. 5.

  5. Spring AMQP 源码分析 08 - XML 配置

    ### 准备 ## 目标 通过 XML 配置文件使用 Spring AMQP ## 前置知识 <Spring AMQP 源码分析 07 - MessageListenerAdapter> ...

  6. 各个安卓版本 使用的 Linux Kernel Version

    Android Version |API Level |Linux Kernel in AOSP --------------------------------------------------- ...

  7. English trip -- VC(情景课)1 E Writing

    Talk with a partner ['pɑːtnə] (伙伴)  与同伴说一说 Comple the words 写全单词 first second third last name area c ...

  8. (转)sublime text3 3176激活

    更改hosts:sudo vim /private/etc/hosts 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 激活 ...

  9. 关于controller中调用多个service方法的问题

    一般service方法是有事务的,把所有操作封装在一个service方法中是比较安全的. 如果在controller中调用多个service方法,只有查询的情况下是可以这样的.

  10. array_unshift

    <!DOCTYPE html> <html> <body> <?php $a=array(0=>"red",1=>" ...