您的位置:首页 > 移动开发 > Swift

黑马程序员——Swift学习笔记:流程控制

2015-09-23 22:51 609 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

参考书:《Swift基础教程》Boisy G.Pitre 著

一、决策

程序的分支结构有多种表达方式,Swift与大多数编程语言一样提供了3种分支的方式。

三目运算符:
由问号和冒号组成的复合表达式,问号前为分支的条件式,问号与冒号之间为条件式为真时的操作,冒号后为条件式为假时的操作
例如:
return a>b?a:b
这种表达式常用于替换结果只有2种情况的if-else语句,常用于和比较有关的函数

if-else语句:
与其它编程语言类似,if-else语句是最为灵活的分支语句,格式如下:
if 条件式
{
<span style="white-space:pre">	</span>条件式为真的执行体
}
//else的表达式部分可以省略,也可以使用else if的格式用于多种结果的条件判断
else
{
<span style="white-space:pre">	</span>条件表达式为假时的执行体
}

★Swift的if的条件式允许省略括号
★执行体两端的花括号在任何情况下都不允许省略,即使执行体只有一句也不可以

[b]★多重判断的条件式的使用技巧是:优先处理范围最小的条件式,这样可以避免程序的逻辑错误
[/b]

[b]switch-case语句:[/b]
与其它编程语言类似,switch-case语句用于多种确定结果,且结果都为精确的值的分支

Swift的switch-case语句增添了一些新的特性:
①[b]Swift的switch-case语句不存在隐式贯穿:当符合某一个case值的执行体完成之后,自动跳出[b]switch-case语句而不会向下继续检查其它的case值,因此case语句之后不需要break语句[/b][/b]
[b][b]★如果需要贯穿的执行体,可在case语句后添加fallthough语句[/b][/b]
4000
[b][b]★如果需要忽略某些执行体,可以使用break跳出[/b][/b]
[b][b][b]★如果case值存在多种匹配的执行体,由于[b]Swift的switch-case语句不存在隐式贯穿,Swift将仅执行第一个匹配的执行体,因此应将范围越小的case值和执行体靠前[/b]
[/b][/b][/b]
[b][b]②[b]Swift的switch-case语句允许匹配多个case值,因此建议case语句按照不同的执行体来分类来设计[/b][/b][/b]
[b][b][b]③[b]Swift的switch-case语句允许匹配元组形式的case值[/b][/b][/b][/b]
[b][b][b][b]④[b]Swift的switch-case语句允许匹配整数的范围[/b][/b][/b][/b][/b]
[b][b][b][b][b]⑤[b]Swift的switch-case语句允许值的绑定[/b][/b][/b][/b][/b][/b]
[b][b][b][b][b]⑥[b]Swift的switch-case语句允许增加where子句来更精确地判断[/b][/b][/b][/b][/b][/b]
例如:

var somePoint=(x:1,y:1)
switch somePoint
{
<span style="white-space:pre">	</span>case (0,0):
<span style="white-space:pre">	</span>println("Origin")
<span style="white-space:pre">	</span>case (var x, 0),(0,var y):
<span style="white-space:pre">	</span>println("Axes")
<span style="white-space:pre">	</span>case var(x,y) where x>0&&y>0:
<span style="white-space:pre">	</span>println("First quadrant")
<span style="white-space:pre">	</span>case var(x,y) where x<0&&y>0:
<span style="white-space:pre">	</span>println("Second quadrant")
<span style="white-space:pre">	</span>case var(x,y) where x<0&&y<0:
<span style="white-space:pre">	</span>println("Third quadrant")
<span style="white-space:pre">	</span>case var(x,y) where x>0&&y<0:
<span style="white-space:pre">	</span>println("Forth quadrant")
<span style="white-space:pre">	</span>default:
<span style="white-space:pre">	</span>break
}

<pre name="code" class="html">var score=200
switch score
{
case 0..<60:
println("WTF!")
case 60:
println("Long Live Pass!")
case 61...100
println("Waste!")
default:
println("Go To Hell, Bitch/Jerk!(你™给朕狗带)")
}



二、循环

Swift的循环结构与其它编程语言类似:分为使用while关键字的循环和使用for关键字的循环

while关键字的循环

Swift的while循环和do-while循环和其它编程语言类似,但在Swift中产生如下的区别:

★Swift的while循环和do-while循环的条件式允许省略括号
★Swift的while循环和do-while循环的循环体两端的花括号在任何情况下都不允许省略,即使循环体只有一句也不可以
while关键字的循环一定要具有可以退出循环的条件语句或者break/return语句,其中break结束循环,return结束循环所在的函数或方法

★while循环和do-while循环的区别是:while循环的循环体有可能不执行,而do-while循环的循环体至少执行1次

for关键字的循环

Swift的for循环与其它编程语言类似,用于初始条件确定,有规律步长的循环
★Swift的for循环的条件式中只有两个分号是必须的,圆括号可以省略

★Swift的[b]for循环的循环体两端的花括号在任何情况下都不允许省略,即使循环体只有一句也不可以
[/b]
★for循环和while关键字的循环的区别是,循环体的迭代语句位置不同:for循环的[b]循环体的迭代语句在循环体之外,因此使用continue语句结束本次循环时,本次[b]循环体的迭代语句仍然运行,而[b]while关键字的循环[b]的循环体的迭代语句在循环体之内,因此使用continue语句结束本次循环时,本次循环体的迭代语句不会运行,如果把for循环的初始条件移动到for语句之前,把[b]循环体的迭代语句移动到[b]循环体之内,此时for循环就等价于while循环[/b][/b][/b][/b][/b]
[/b]
此外,Swift还增加了适用于遍历的for-in循环

★for-in循环可用于数组、字典或字符串的整体遍历或迭代规律的范围遍历

格式如下:
for 常量名|_ in 数组|字典|字符串|范围
{
<span style="white-space:pre">	</span>循环体
}
★for-in循环的常量在每次循环时自动赋值,因此无需声明
★如果循环体中不需要用于迭代的常量,可以使用下划线代替
例如:
//数组的遍历
for element in testArray
{
<span style="white-space:pre">	</span>statement
}

//字典的遍历
for (key,value) in testDictionary
{
<span style="white-space:pre">	</span>statement
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: