之前初识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等循环语句就不做过多赘述了。因为其比较较简单,没有太多让人眼前一亮的东西。

窥探Swift编程之强大的Switch的更多相关文章

  1. 窥探Swift编程之别样的HelloWorld

    从今天就开始陆陆续续的发布一些有关Swift语言的东西,虽然目前在公司项目开发中Objective-C还是iOS开发的主力军,但是在不久的将来Swift将会成为iOS开发中的新生宠儿.所以在在Xcod ...

  2. 窥探Swift编程之错误处理与异常抛出

    在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中 ...

  3. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

  4. Swift编程权威指南第2版 读后收获

    自从参加工作一直在用OC做iOS开发.在2015年的时候苹果刚推出swift1.0不久,当时毕竟是新推出的语言,大家也都很有激情的学习.不过在学完后发现很难在实际项目中使用,再加上当时公司项目都是基于 ...

  5. 窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

    协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) - ...

  6. 窥探Swift之类的继承与类的访问权限

    上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...

  7. 窥探Swift之别具一格的Struct和Class

    说到结构体和类,还是那句话,只要是接触过编程的小伙伴们对这两者并不陌生.但在Swift中的Struct和Class也有着令人眼前一亮的特性.Struct的功能变得更为强大,Class变的更为灵活.St ...

  8. 窥探Swift之需要注意的基本运算符和高级运算符

    之前更新了一段时间有关Swift语言的博客,连续更新了有6.7篇的样子.期间间更新了一些iOS开发中SQLite.CollectionViewController以及ReactiveCocoa的一些东 ...

  9. 窥探Swift编程之在Playground上尽情的玩耍

    自从苹果公司发布Swift的时候,Xcode上又多了一样新的东西---"Playground".Playground就像操场一样,可以供我们在代码的世界里尽情的玩耍,在本篇博客中就 ...

随机推荐

  1. can't connect to mysql server on 'localhost'(10061)

    在linux下安装Navicat,想说在windows下试一试phpmyadmin之外的mysql图形工具. 显示下载安装了mysql workbench,链接成功.然后又弄了一下输入法重启,想说试一 ...

  2. HTML5可视化编辑与微数据

    1.HTML 5 全局 contenteditable 属性 contenteditable 属性规定是否可编辑元素的内容. <p contenteditable="true" ...

  3. oracle--导出、导入blob类型的字段

    blob是oracle中的一个数据类型,保存的是压缩后的二进制形式的大数据. 数据迁移如果涉及到blob字段,都不好处理,因为无法用常规方法进行操作,如:使用select查看该字段,也无法用inser ...

  4. asp.net 验证码(一)Session

    1.模板页 //创建网页模板 输入验证码文本框 并且将文本框中的内容发送的后端验证中去 <p>请输入验证码:<input type="text" name=&qu ...

  5. Web服务器控件之button

    button有两种类型的按钮,一种是提交按钮,一种是命令按钮.只说命令按钮. 命令按钮事要使用两个属性,分别是CommandName和CommandArguement属性,当该按钮被点击时,将页面中的 ...

  6. 使用DataList实现数据分页的技术

    今天做网站的时候,用到了分页技术,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们. DataList控件可以按照列表的形式显示数据表中的多行记录,但是被显示的多行记录没有分页功能,使用起来不太方 ...

  7. AWS 免费套餐

    AWS 免费套餐 转载自:https://aws.amazon.com/cn/free/?sc_channel=PS&sc_campaign=acquisition_CN&sc_pub ...

  8. HTML和CSS经典布局4

    如下图: 需求: 1. 如图 2. 可以从body标签开始. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xht ...

  9. 剑指Offer面试题:23.二叉树中和为某一值的路径

    一.题目:二叉树中和为某一值的路径 题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.例如输入下图中二叉树和整数2 ...

  10. EF:split your EDMX file into multiple diagrams

    我们可以把一个EDMX文件划分为多个类图: 1.在VS中打开EDMX设计器: 2.切换到“模型浏览器”属性设置窗口: 3.在diagrams上右键菜单中选择“添加新的关系图”: 4.在原来的关系图上可 ...