窥探Swift编程之强大的Switch

简介:

  之前初识Swift中的Switch语句时,真的是让人眼前一亮,Swift中Switch语句有好多特有而且特好用的功能。说到Switch, 只要是写过程序的小伙伴对Switch并不陌生。其在程序中的出镜率还是比较高档。Switch属于程序的分支语句,Switch的功能便于处理多个分支的较为复杂点的逻辑分支。能用Switch实现的代码都可以使用多个if-else分支语句进行替换。

  今天这篇博客就是要看一下Swift中的Switch的不同之处,来总结一下Switch不同的特性。在Swift语言中的Switch中,你可以匹配数字,字符串,元组,字符区间等。并且还可以进行数值绑定,以及在case中使用where子句(SQL中经常使用Where子句)。默认的Switch语句中是不需要添加break语句的,因为其默认就是只执行一个case语句就结束,除非你添加上fallthrough。具体的内容还是看下方的小实例吧。

  

一、Switch语句的匹配类型

    Switch语句不仅像其他语言那样支持匹配数字,在Swift语言中的Switch还支持其他现代编程语言所不支持的数据类型,比如字符串,元组,字符区间等。下方会通过一系列的实例来介绍一下Switch语句的用法。在Switch语句中,默认是执行一条符合的case就结束整个Switch语句,如果你想移除执行多个case子句,后面的部分会介绍到。Switch和枚举一般是形影不离的,鉴于本篇博客是介绍Switch语句的,所以我们就不使用枚举定义匹配项了,不过在正式开放中,最好还是把匹配项定义成枚举的形式,关于Swift中的枚举的内容请参考前面发布的一片博客窥探Swift之别样的枚举类型

    1.使用Switch匹配数字

      使用Switch匹配数字这部分和其他语言一样,不过Swift中的Switch是不需要使用break语句的,因为其默认执行完匹配项就跳出Switch语句了。下方是把数字1,2,3转换成“老大”,“老二”,“超生了”的字符串。由实例可知,匹配完 2 后,即使没加break语句,也不会继续执行后边的case语句了,这一点还是比较人性化的。实例比较简单,就不做过多赘述了。

 

    2.使用Switch匹配字符串

      这是一个非常值得兴奋的一个特性,在其他一些编程语言中(比如OC)是不支持匹配字符的。在Swift中的Switch语句就支持匹配字符串。下方是一个匹配美女的Switch-case的一个实例,如果你碰到“凤姐”这样的大“美女”,那么你就只能呵呵啦~。请看下方实例:

 

 

    3.使用Switch语句匹配数字区间

      这个特性也是灰常不错的,在Swift中有区间运算符(1...5 表示1到5这个区间中的所有整数)。如果匹配的值是整数,那么我们可以在Case匹配条件中使用区间。下方就是一个匹配数字区间的一个实例,salary是月薪,我们将通过这个月薪分一下等级,这时我们就会用到区间了。具体如下:

 

  

    4.匹配元组

      元组可以可以作为case的条件的,元组在case中的用法还是比较灵活的。在case条件中,我们可以使用下划线来忽略元组中的某一项。并且我们还可以在元组中的一些项中使用区间运算符。在元组匹配中如果你想忽略掉元组中的一项,可以使用下划线进行忽略即可。下方就是一个元组匹配的实例,如下所示。

 

      上面的例子是在匹配元组时忽略不需要匹配的元组匹配项,接下来我们还可以把不匹配的值通过参数的形式传到case后方的子语句块中。这也就是Switch中的数值绑定,具体实例如下所示:

 

 

 

二、Where子句

    在SQL中Where子句的出镜率是比较高的,但是出现Switch-Case分支语句中实不多见。Where子句在SQL中后面跟的是条件,在Switch-Case中的Where子句也是如此,后方跟的也是条件。Where子句要结合着上方的介绍的数值绑定来使用,加上Where子句,Swith-Case分支语句的功能就更为强大,可谓是提升了一个能量级。下方是在元组匹配中结合数值绑定使用Where子句,Case和Where后的条件都满足时才会执行该Case后方的语句块。具体实例如下:

 

 

    上面的实例是在元组匹配中结合着数值绑定来使用的Where子句,下方我们是在字符串匹配中使用Where子句。道理是一样的,就不做过多赘述了,直接代码走起:

    Switch-Case语句中引入Where子句可谓是完全可以替代if - else 语句的分支。Where子句使得Switch-Case语句中的条件更为灵活多变,使其更为强大。这一点也是Swift中Switch的强大之处。

 

  今天的博客就先到这儿,关于if-esle分支语句,for, while等循环语句就不做过多赘述了。因为其比较较简单,没有太多让人眼前一亮的东西。

相关文章
|
3月前
|
安全 Swift C语言
在Swift编程语言中,`switch`语句
在Swift编程语言中,`switch`语句
36 1
|
4月前
|
JSON IDE Swift
Swift语言的实践编程
Swift语言的实践编程
30 3
|
6月前
|
Swift C++ Ruby
32 Swift面向协议编程初探
32 Swift面向协议编程初探
37 0
Swift 中的面向协议编程是如何点亮我的人生的
本文讲的是Swift 中的面向协议编程是如何点亮我的人生的,面向对象编程至今已经使用了数十年了,并且成为了构建大型软件约定俗成的标准。作为iOS编程的中心思想,遵循面向对象规范来编写一个 iOS 的应用几乎不可能实现。虽然面向对象有很多优点比如封装性,访问控制和抽象性,但是它也自带有固有的缺点。
1103 0
Swift 面向协议编程入门
本文讲的是Swift 面向协议编程入门,这个教程也是为了那些不知道类和结构体根本区别的人写的。我们都知道在结构体里是没有继承的,但是为什么没有呢?
1150 0
|
开发者
在 Swift 3 上对视图控件实践面向协议编程
本文讲的是在 Swift 3 上对视图控件实践面向协议编程,你可能听人说过,学到了知识却缺失了行动就好比人长了牙却还老盯着奶喝一样。那好,我们要怎样开始在我的应用中实践面向协议编程
1276 0
|
自然语言处理 C语言 iOS开发
iOS - Swift 与 C 语言交互编程
前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式。 1、基本数据类型 Swift 提供了一些和 C 语言的基本类型如 char,int,float,double 等价的 Swift 基本数据类型。
1365 0
|
iOS开发 Swift 存储
窥探Swift编程之别样的HelloWorld
原文:窥探Swift编程之别样的HelloWorld   从今天就开始陆陆续续的发布一些有关Swift语言的东西,虽然目前在公司项目开发中Objective-C还是iOS开发的主力军,但是在不久的将来Swift将会成为iOS开发中的新生宠儿。
1184 0