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

来源:互联网 发布:淘宝的电脑主机能买吗 编辑:程序博客网 时间:2024/05/16 04:33

------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的条件式允许省略括号
★执行体两端的花括号在任何情况下都不允许省略,即使执行体只有一句也不可以
★多重判断的条件式的使用技巧是:优先处理范围最小的条件式,这样可以避免程序的逻辑错误

switch-case语句:
与其它编程语言类似,switch-case语句用于多种确定结果,且结果都为精确的值的分支
Swift的switch-case语句增添了一些新的特性:
Swift的switch-case语句不存在隐式贯穿:当符合某一个case值的执行体完成之后,自动跳出switch-case语句而不会向下继续检查其它的case值,因此case语句之后不需要break语句
★如果需要贯穿的执行体,可在case语句后添加fallthough语句
★如果需要忽略某些执行体,可以使用break跳出
★如果case值存在多种匹配的执行体,由于Swift的switch-case语句不存在隐式贯穿,Swift将仅执行第一个匹配的执行体,因此应将范围越小的case值和执行体靠前
Swift的switch-case语句允许匹配多个case值,因此建议case语句按照不同的执行体来分类来设计
Swift的switch-case语句允许匹配元组形式的case值
Swift的switch-case语句允许匹配整数的范围
Swift的switch-case语句允许值的绑定
Swift的switch-case语句允许增加where子句来更精确地判断
例如:
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=200switch score{case 0..<60:println("WTF!")case 60:println("Long Live Pass!")case 61...100println("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的for循环的循环体两端的花括号在任何情况下都不允许省略,即使循环体只有一句也不可以
★for循环和while关键字的循环的区别是,循环体的迭代语句位置不同:for循环的循环体的迭代语句在循环体之外,因此使用continue语句结束本次循环时,本次循环体的迭代语句仍然运行,而while关键字的循环的循环体的迭代语句在循环体之内,因此使用continue语句结束本次循环时,本次循环体的迭代语句不会运行,如果把for循环的初始条件移动到for语句之前,把循环体的迭代语句移动到循环体之内,此时for循环就等价于while循环
此外,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}



0 0
原创粉丝点击