if else语句
if语句和其他语言中的使用是一样的,只是语法稍有不同。首先是不用括号,其次是即使是if后面只有一条语句,也必须加上大括号。
还记得可选类型吗,if语句可以用来检测可选类型是否为空.
for 语句
Swift3中移除了传统C语言里面的for循环,就像下面那种
for-in 语句
这个语句感觉在swift里面用得很爽,尤其是用来遍历集合。集合类的遍历方法请看我上一篇关于集合的文章。
上面的只能是每次加1,但是现在可能有需求每次增加的不是1,所以现在有了这个:
while语句和 repeat-while语句
把括号去掉就行了
Break和continue
这个用法和C里面没差,不举例了
Switch语句
最多东西的一个。Swift里面的Switch语句不仅可以判断整形,而且还可以判断各种类型。注意的是执行了一个case后是不会继续往下面执行的,也就是不用添加break语句。相反如果你想要继续往下执行,你必须在这个case最后加上Fallthrough。另外就是default,对于不是枚举类型的变量,defalut必须加上。枚举类型的变量在完全枚举的时候才可以省略default。
switch里面一个case可以对应多个选项,每个选项之间用逗号分开。这个用法是用来实现c里面的某个选项里面没有执行代码的情况。Swift不允许某个选项里面没有可执行的代码。
case里面也可以是一个范围,在每个case之间的范围有重叠的话,只会匹配第一个
对Tuple 的匹配
你可以匹配Tuple的两个值,也可以只匹配一个值,还可以匹配范围
Where语句在switch中
where可以用来进一步对case添加约束
Labeled Statements
这个labeled statements就像goto语句,但是跳转比较有限,只能用于循环里面。虽然switch也可以加上去,但是并没有用。
Assertion和Precondition
|
|
判断一个情况是否为true,不为true直接停止程序。
如果你通过其他判断语句已经知道了当前的条件已经不符合需求了,那么可以用下面的语句直接结束程序。
Swift现在多了一个Preconditions,区别文档上说的是开发时候用Assertions,生产用Preconditions。(Assertions help you find mistakes and incorrect assumptions during development, and preconditions help you detect issues in production. )
文档上有两段话:
If you compile in unchecked mode (-Ounchecked), preconditions are not checked. The compiler assumes that preconditions are always true, and it optimizes your code accordingly. However, the fatalError(:file:line:) function always halts execution, regardless of optimization settings.
You can use the fatalError(:file:line:) function during prototyping and early development to create stubs for functionality that hasn’t been implemented yet, by writing fatalError(“Unimplemented”) as the stub implementation. Because fatal errors are never optimized out, unlike assertions or preconditions, you can be sure that execution always halts if it encounters a stub implementation.
但是没找到这个-Ounchecked模式,到时有一个选项是disable_safty_checks。
这个选项的关闭和Swift_OPTIMIZATION_LEVEL的模式有关系。如果你选择的是 -Onone,那么不管disable_safty_checks的值,都会检测precondition和assert。但是如果开启了优化,那么assert就再不检测,而precondition就会根据是否关闭安全检测来执行。
guard语句
这个和assertions差不多,都是用来做判断的,不过这个要自己加上处理。用来在条件不满足的情况下跳出方法或循环。
available
用来判断是否可以使用某个版本API