1、swift语句中的控制流和其他语言大致相同,使用if和switch作为条件控制。使用 for-in、for、while、do-while作为循环。

2、区别之处:小括号不是必须的,但是主体的大括号还是必需的,,,,

3、在if语句中,条件必须是布尔表达式,这意味着if score{...}是错误的,不能隐含的与0比较

4、可以一起使用if和let来防止值的丢失。这些值是可选的。可选的值包含一个值或者包含一个nil来指定值还存不存在。写一个问号"?"在类型后表示值是可选的。

5、在switch-case语句中,switch可以接收任何类型的变量或语句作为条件,不再限制于字符类型、整型等,在一条语句结束后,不需要再写上break,但是最后的defalut不能省略。switch的每一个case至少有一条语句,不允许后面跟一个空语句。

6、可以在循环中保持一个索引,通过".."来表示索引范围或明确一个初始值、条件、增量。用"..<"表示不算上边界,用"..."表示算上边界

7、在控制流中有一个新的类型元组,它可以同时存放很多的值,可以通过"元组名.索引"来获取其中值,也可以遍历获取。当然也可以通过键或者函数获取。

具体举例如下:

类型后面带一个?代表前面如果是nil就执行后面的部分,如果不是nil,后面就不执行,表示后面的数据是可选的

var name:String? = "Tom"
name == nil //false

在if中使用let temp = name,如果temp是nil,后面不执行,相反则执行

//name = nil
if let temp = name{
println("hello \(temp)") //"hello Tom"
}

传统for循环语句,不需要小括号

//传统for循环
let array = [,,,,]
var sum1 =
for var i = ; i<; i++
{
sum1 += array[i]
}
sum1 //输出结果

高级for循环,不需要小括号,判断时的条件必须是布尔类型,需要是具体的算数逻辑或关系逻辑 如>、<、==

//高级for循环
let Allscore = [,,,,]
var sum =
for eachscore in Allscore{
if eachscore > 50 //使用关系判断的比较方式作为判断条件
{
sum +=
}
else
{
sum +=
}
}
sum //输出结果

采用.代替省略的索引,使用..<表示不包括边界,如果包含边界,使用...

//不包括索引5
for j in ..<{
sum1 += array[j]
}
sum1 //输出结果

swicth后的表达式可以是各种类型

case后面可以根很多种情况

case后面用let x where 进行分类

case后面不能用break

defalut不能省略

var color = "lightgray"
var commment = ""
switch color
{
case "red":
commment = "激情"
case "green","blue":
commment = "忧郁"
case let x where x.hasSuffix("gray"):
commment = "灰色心情-\(x)"
default:
commment = "其他心情"
}
commment //输出结果

新类型元组的使用,可以存放多个值,通过"元组.索引"获取值,也可以遍历获取

//新类型:元组
var tuples = ("Tom",)
tuples. = "Jobs" //获取元组中第一个值
tuples. = 23 //获取元组中第二个值
println(tuples) //元组使用
let dictionary = [
"Prime":[,,,,,],
"Fibonacci": [, , , , , ],
"Square": [, , , , ],
]
var largest = 0
//通过for高级循环遍历元组中的数据
for (kind,numbers) in dictionary{
for number in numbers{
if largest < number{
largest = number
}
}
}
largest //输出最大值

where循环语句,也是不用使用小括号了

//where语句的使用(明显的区别就是不适用()括号了)
//方式一
var num =
while num < {
num = num *
}
num
//方式二
var tempNum =
do{
tempNum = tempNum *
}while tempNum <
tempNum

switch语句拓展:

不存在隐式的贯穿(Fallthrough)
与C语言和Objective-C中的switch语句不同,在 Swift 中,当匹配的case块中的代码执行完毕后,程序会终止switch语句,而不会继续执行下一个case块。这也就是说,不需要在case块中显式地使用break语句。这使得switch语句更安全、更易用,也避免了因忘记写break语句而产生的错误。

多个模式

范围匹配
case块的模式也可以是一个值的范围。下面的例子展示了如何使用范围匹配来输出任意数字对应的自然语言格式:

 
控制转移语句
控制转移语句改变你代码的执行顺序,通过它你可以实现代码的跳转。Swift有四种控制转移语句。 
- continue
- break
- fallthrough
- return(留在函数中介绍)
 
Continue
continue告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。就好像在说“本次循环迭代我已经执行完了”,但是并不会离开整个循环体。
 
Break
break语句会立刻结束整个控制流的执行。当你想要更早的结束一个switch代码块或者一个循环体时,你都可以使用break语句。

在Switch代码块中使用Break:
当在一个switch代码块中使用break时,会立即中断该switch代码块的执行,并且跳转到表示switch代码块结束的大括号(})后的第一行代码。
												

最新文章

  1. 《奥威Power-BI智能分析报表制作方法》精彩回顾
  2. IBM powerVM VIOS
  3. 使用.NET FrameWork获取CPU,内存使用率以及磁盘空间
  4. JSON 之 SuperObject(3): 访问
  5. LA 3177 长城守卫
  6. JVM学习笔记(一)------基本结构
  7. VHD_Update_mount-vhd
  8. 微信小程序正式发布!这是最全的上手指南
  9. Hdu 3410 【单调队列】.cpp
  10. 触动精灵远程Log模块
  11. 【3D计算机图形学】变换矩阵、欧拉角、四元数
  12. returned a response status of 403 OR 409
  13. 关于Bitcoin的分叉之路
  14. 转-Linux硬件装置和磁盘分区MBR
  15. poj1416
  16. day09三目运算
  17. mongodb安装、配置
  18. org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)
  19. java可变参数长度
  20. linux使用lvresize和resize2fs调整lv大小

热门文章

  1. 静态数据认证(SDA)与动态数据认证(DDA)的区别
  2. 前端之JavaScript第三天学习(7)-JavaScript-数据类型
  3. SQL Server性能优化(1)使用SET函数
  4. Redis 起步
  5. idea新建项目完整过程
  6. Leetcode#59 Spiral Matrix II
  7. windows下安装php5.2.*,php5.3.*,php5.4.*版本的memcache扩展(转)
  8. uitableviewcell 和 uibutton
  9. 使用 Microsoft Word 发布博客文章
  10. 8086CPU各寄存器的用途