zoukankan      html  css  js  c++  java
  • 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中的第二项

    }

  • 相关阅读:
    poj 3666 Making the Grade
    poj 3186 Treats for the Cows (区间dp)
    hdu 1074 Doing Homework(状压)
    CodeForces 489C Given Length and Sum of Digits...
    CodeForces 163A Substring and Subsequence
    CodeForces 366C Dima and Salad
    CodeForces 180C Letter
    CodeForces
    hdu 2859 Phalanx
    socket接收大数据流
  • 原文地址:https://www.cnblogs.com/foxting/p/4417966.html
Copyright © 2011-2022 走看看