黑马程序员——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!(你™给朕狗带)")}
二、循环
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
- 黑马程序员——Swift学习笔记:流程控制
- 黑马程序员—流程控制
- 黑马程序员——学习笔记03.java流程控制语句和函数
- 黑马程序员Java笔记——流程控制
- 黑马程序员——流程控制语句的总结笔记
- 黑马程序员笔记——Java流程控制
- Swift学习笔记5——流程控制语句
- Swift学习笔记 -- 流程控制
- 黑马程序员——Swift学习笔记:高级类型
- 黑马程序员——Swift学习笔记:函数
- 黑马程序员——Swift学习笔记:闭包
- 黑马程序员_java自学学习笔记(二)----流程控制语句
- 黑马程序员 - 学习笔记5 流程控制语句
- 黑马程序员_java程序流程控制学习笔记
- 黑马程序员-------c语言学习笔记之流程控制
- 黑马程序员——流程控制
- 黑马程序员——流程控制语句
- 黑马程序员——流程控制,函数
- VMware安装Linux ubuntu虚拟机
- 面向对象——内部类
- 150923
- LeetCode Contains Duplicate
- Linux复习笔记(四) -- Linux常用命令
- 黑马程序员——Swift学习笔记:流程控制
- UML类图几种关系的总结
- 【线性代数公开课MIT Linear Algebra】 第四课 从矩阵消元到LU分解
- C++编译器为类自动生成的函数
- 【iPhone/iPad】苹果iOS9正式版更新升级及固件刷机教程
- 金星脱口秀有感
- Light OJ 1382 The Queue(组合计数)
- linux安装skynet问题总结
- 响应式网页设计--登陆窗口布局的实现