博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 个人学习笔记 - 06: 控制流
阅读量:7082 次
发布时间:2019-06-28

本文共 1703 字,大约阅读时间需要 5 分钟。

本文章纯粹是中文版的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考

以下还是有很多没看懂、不确定的地方,我会以“存疑”的注解指出。

在此感谢中文版翻译者,这极大地加快了 Swift 的学习速度。

本文地址:


Reference:

原版:

中文版:

这篇一部分其实就是各种基础了,有 Objective-C 的基础,这一小节绝大部分是不用看的。主要关注 switch 和 guard 就好

没什么新意的部分

for - in

没什么好讲的,忽略

while

while condition {        ...    }        repeat {        ...    } while condition

if

if ... {        ...    } else if ... {        ...    } else {        ...    }

switch

基本格式

switch anInt {    case 1:        ...    case 2, 3, 4:      // 这里与 C 是非常不一样的        ...            // 每一行 case 的执行语句中至少要有一句话。实在没话说的话,                       // 就用一个 break 吧。在其他情况下,default 并不是必须的    default:        ...    }

个人感觉,如果你是 Swift 和 Objective-C 混用的话,建议还是在每一个分支处理的结尾统一加上 break 语句。因为如果不这么做,你一不小心就会把 Swift 的习惯带到 Objective-C 上面去了。

此外,case 后面的内容可以用前几章提到的区间来表示。

元组和 where 语句的使用

Switch 可以使用元组。元祖中可以使用 “_” 来表示 “*” 的含义。

比如官方例子:

switch somePoint {    case (0, 0):        print("(0, 0) is at the origin")    case (_, 0):        print("(\(somePoint.0), 0) is on the x-axis")    case (0, _):        print("(0, \(somePoint.1)) is on the y-axis")    case (-2...2, -2...2):        print("(\(somePoint.0), \(somePoint.1)) is inside the box")    default:        print("(\(somePoint.0), \(somePoint.1)) is outside of the box")    }

coordinateGraphSimple_2x.png

此外,case 最后面还可以加上花样,就是使用 where 语句进一步限制 case 的范围。再比如官方的例子:

switch yetAnotherPoint {    case let (x, y) where x == y:        print("(\(x), \(y)) is on the line x == y")    case let (x, y) where x == -y:        print("(\(x), \(y)) is on the line x == -y")    case let (x, y):        print("(\(x), \(y)) is just some arbitrary point")    }

coordinateGraphComplex_2x.png

guard

在 Objectice-C 中,我们一般会使用 if 在函数最开始进行参数检查。在 Swift 中,建议使用 guard 来做这样的事情。语法如下:

guard condition else {        ...    }

下一篇

转载地址:http://civml.baihongyu.com/

你可能感兴趣的文章
修改GIT密码
查看>>
Nginx日志切割
查看>>
乒乓球
查看>>
Linux查询网址
查看>>
十,选择cfee编辑器并学会调试程序。以及结束语。
查看>>
炮弹转向鼠标点击方向,随即发射炮弹并产生爆炸特效
查看>>
新增图表控件
查看>>
LeetCode——Count Complete Tree Nodes
查看>>
【转】根据URL来读取网页输出的数据
查看>>
virtualbox里调整ubuntu的屏幕分辨率__转
查看>>
Python语言学习 (四)1.3
查看>>
【BZOJ 3270】博物馆
查看>>
Spring注解开发
查看>>
AHB协议
查看>>
Adore
查看>>
2018-2019-1 20165309 20165312 20165330 实验五 通讯协议设计
查看>>
union 和 union all
查看>>
[Leetcode]650. 2 Keys Keyboard
查看>>
yii2的安装
查看>>
wdcp日志
查看>>