Object-C--->Swift之(四)强大的Switch

简介: Swift依然继承了C和Object的Switch语句,但在原有的基础上进行了改变,使其变得更加强大任性的case标签:case标签可以紧跟多个值 var score = "C" switch score { case "A...

Swift依然继承了C和Object的Switch语句,但在原有的基础上进行了改变,使其变得更加强大

任性的case标签:

case标签可以紧跟多个值
  var score = "C"
    switch score
    {
    case "A","a":
    print("优秀")
        case "B","b":
        print("良好")
    case "C","c":
        print("及格")
    case "D","d":
        print("不及格")

    default:
        print("只能输入单个字符呀")
    }

case标签可以与范围运算符合作

 var score = 80
    switch score
    {
    case 90...100:
    print("优秀")
        case 80..<90:
        print("良好")
    case 60..<80:
        print("及格")
    case 0..<60:
        print("不及格")

    default:
        print("只能输入单个字符呀")
case里面与where语句结合
   case var(name,results) where name=="小明" && results == 100:
    print("小明取得了100分")

声明常量占位符:grade

使用grade可以获取score的值,当不能匹配上面case块时,就会执行最后一个case块,将score变量的值传给grade,这时候就不需要default语句啦。

       var score = 101
    switch score
    {
    case 90...100:
    print("优秀")
        case 80..<90:
        print("良好")
        fallthrough
    case 60..<80:
        print("及格")
    case 0..<60:
        print("不及格")

    case let grade:
        print("你输入的成绩是:\(grade),难道你们不是百分制吗?")
}

Switch不存在隐式贯穿和显式贯穿

解释一下什么意思:Swift语句不再像C和OC那样,不再要求每一个case语句后面显式的加一个break语句。使得Swift变得更加安全、好用。
但是如果我们想用C语言的贯穿风格,这里Swft提供了fallthrough语句,可以方便的回归到C和OC时代。

     var score = 80
    switch score
    {
    case 90...100:
    print("优秀")
        case 80..<90:
        print("良好")
        fallthrough
    case 60..<80:
        print("及格")
    case 0..<60:
        print("不及格")

    default:
        print("只能输入单个字符呀")    

我们在上面代码上加入fallthrough,这次输出的就变成了

                    良好
                    及格  
相关文章
|
程序员 iOS开发
Object-C与Swift混合开发
Object-C作为Apple的iOS App开发语言服务了许多个年头,2014年Apple推出了新的编程语言Swift,更高效更安全的口号再次吸引了一大批非iOS开发程序员进入,小编认为Swift取代Object-C只是时间问题,在神州这片土地上,毕竟技术普及有些落后,但再有两年左右时间Swift产品链将形成,第三方支持框架逐步完善,Swift必将成为iOS开发主流。
766 0
|
存储 Swift
Object-C---&gt;Swift之(九)延迟存储属性
Swift引入了一种新的机制–延迟存储属性机制,在第一次被调用时才会被计算初始值的属性,声明时需要使用lazy修饰符。 注意:定义属性时一定得是变量(var),常量是无法使用延迟存储机制。
714 0
|
存储 程序员 Swift
Object-C---&gt;Swift之(八)类和结构体
在Swift中类和结构体有高度的相似性。二者主要区别是: 1. 结构体不支持继承 2. 结构体不支持定义析构器 3. 结构体是值类型,而类是引用类型 定义类语法格式: [修饰符]class 类名 { 零个到多个构造器 零个到多个属性 零个到多个方法 零个到多个下标 } 对一个类定义而言,包括3种最常见的成员:构造器、属性、方法,如果程序员没有为一个类提供构造器,则系统会为该类提供一个默认、无参数的构造器。
827 0
|
网络架构 iOS开发 Swift