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.

定义一个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中的第二项

}

 

目录
相关文章
|
27天前
|
Swift
Swift 中 struct(结构体)和 class(类)的区别
【10月更文挑战第10天】理解 struct 和 class 的区别对于正确使用 Swift 语言进行编程非常重要。在实际开发中,需要根据具体的需求和场景来选择合适的数据类型,以充分发挥它们的优势,提高代码的质量和效率。
|
4月前
|
存储 Swift
Swift之struct二进制大小分析
【7月更文挑战第18天】Swift 中 `struct` 的二进制大小分析: `struct` 作为值类型, 其内存布局和大小由成员变量决定。基本类型如 `Int`, `Double`, `Bool` 存储大小固定; 复合类型如数组大小取决于元素数量及类型。示例 `struct` 包含 `Int`, `Double`, `Bool`, 和 `[String]`。`Int` 和 `Double` 各占 8 字节, `Bool` 占 1 字节, 数组大小根据字符串存储开销变化。还需考虑内存对齐以优化访问效率。综上, 分析 `struct` 大小需考量多种因素。
|
开发者
std::tuple还是struct?
std::tuple是C++11提供的新模板类,可以翻译为“元组”,可把多个不同类型的变量组合成一个对象。std::tuple可看做std::pair的泛化实现,std::pair包含两个元素,std::tuple 可以同时包含多个元素,它拥有 struct 的表现,但是无需定义实际的 struct,可用于一个函数返回多个值的场景下。
|
6月前
|
存储 数据处理 Swift
在Swift中,类(class)和结构体(struct)
在Swift中,类(class)和结构体(struct)
70 1
|
Swift
Swift实用小册08:Class类的Struct结构体的使用
Swift实用小册08:Class类的Struct结构体的使用
273 0
Swift实用小册08:Class类的Struct结构体的使用
|
iOS开发
iOS - Swift Struct 结构体
1、Struct 的创建 1.1 基本定义 结构体的定义 // 定义结构体数据类型 struct BookInfo { // 每个属性变量都必须初始化 var ID:Int = 0 var Na...
830 0
|
Swift C语言
Swift语言精要 - 浅谈结构体(Struct)
CGRect, CGSize, CGPoint这些是 。 String, Int, Array, Dictionary这些我们经常用的也是结构体(Struct)。   那么结构体(Struct)到底是什么呢? 学过C语言的朋友一定知道它是什么,在这里我就不多说了,你懂的。
794 0
|
Swift
SWIFT中函数返回值为Tuple
在playgroundm内键入以下代码,求一个成绩数组内最大分值和最小分值 func maxminScore(scores:Array) -> (maxScore:Int,minScore:Int)? { //一个可以空的Tuple     if scores.
749 0