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代码块结束的大括号(})后的第一行代码。
												

swift:入门知识之控制流的更多相关文章

  1. Swift经典知识整理

    1  关于Swift Swift 是一种适用于 iOS 和 OS X 应用的全新编程语言,它建立在最好的 C 和 Objective-C 语言之上,并且没有 C 语言的兼容性限制.Swift 采用安全 ...

  2. Swift入门篇-闭包和函数

    今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...

  3. Swift入门篇-循环语句

    今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...

  4. Swift入门篇-字符串和字符

    今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...

  5. Swift入门篇-基本类型(2)

    现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...

  6. Swift入门篇-Hello World

    提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...

  7. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  8. [置顶] Mysql存储过程入门知识

    Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...

  9. Swift入门教程:基本语法大全

    原文:Swift入门教程:基本语法大全       简介:                                                                        ...

随机推荐

  1. 软件工程实践小队Scrum Meeting

    例会记录 时间:2013年10月20日星期日 Part 1 会议要点: 1. 小组讨论PM.Dev.Test的各自特点: 2. 小组讨论我们的项目网上教学问答系统的相关问题: 3.确定小组成员在第一轮 ...

  2. Careercup - Google面试题 - 4699414551592960

    2014-05-06 13:34 题目链接 原题: we have a random list of people. each person knows his own height and the ...

  3. android讯飞语音开发常遇到的问题

    场景:android项目中共使用了3个语音组件:在线语音听写.离线语音合成.离线语音识别 11208:遇到这个错误,授权应用失败,先检查装机量(3台测试权限),以及appid的申请时间(35天期限), ...

  4. android 通过httpclient下载文件并保存

    代码:(主要针对图片.gif下载无问题) /** * 下载网络文件 * @param url 请求的文件链接 * @param IsMD5Name 是否MD5加密URL来命名文件名 * @param ...

  5. 学习Linux第五天

    1.VIM编辑器 3种模式: Command Model , Insert Model , Last line Model 安装vim: sudo apt-get install vim 如果提示出错 ...

  6. 防止IE7,8进入怪异模式

    在页头添加 <meta http-equiv="X-UA-Compatible" content="IE=edge" />

  7. 【数据结构】通用的最小堆(最大堆)D-ary Heap

    听说有一种最小(大)堆,不限于是完全二叉树,而是完全D叉树,名为D-ary Heap(http://en.wikipedia.org/wiki/D-ary_heap).D可以是1,2,3,4,100, ...

  8. hibernate---ID生成策略

    5.1.4.1. Generator 可选的<generator>子元素是一个Java类的名字, 用来为该持久化类的实例生成唯一的标识.如果这个生成器实例需要某些配置值或者初始化参数, 用 ...

  9. Combox 实现百度收索框效果

    标题中所谓百度收缩框效果,就是在输入数据的时候,自动提示,来张图就明白了: 用Combox来实现这个功能只是需要设置三个A开头的属性就OK了:AutoCompleteSource.AutoComple ...

  10. 【BZOJ】【1269】【AHOI2006】文本编辑器editor

    Splay Splay序列维护的模板题了……为了便于处理边界情况,我们可以先插入两个空格当作最左端和最右端,然后……其实本题主要考察的就是Build.splay和Findkth这三个操作,我们可以实现 ...