`
阅读更多

循环语句能够使程序代码重复执行。Swift编程语言支持4种循环构造类型:while、do while、for和for in。for和while循环是在执行循环体之前测试循环条件,而do while是在执行循环体之后测试循环条件。这就意味着for和while循环可能连一次循环体都未执行,而do while将至少执行一次循环体。for in是for循环的变形,它是专门为集合遍历而设计的。
一、while语句
while语句是一种先判断的循环结构,格式如下:
while 循环条件 {
    语句组 
}
while循环没有初始化语句,循环次数是不可知的,只要循环条件满足,循环就会一直进行下去。
下面看一个简单的示例,代码如下:

[html] view plaincopy
 
  1. var i:Int64 = 0  
  2.   
  3.   
  4. while i * i < 100000 {  
  5.     i++  
  6. }  
  7.   
  8.   
  9. println("i = \(i)")  
  10. println("i * i = \(i * i)")  



输出结果如下:
i = 317
i * i = 100489
上述程序代码的目的是找到平方数小于100 000的最大整数。使用while循环需要注意几点,while循环条件语句中只能写一个表达式,而且是一个布尔型表达式,那么如果循环体中需要循环变量,就必须在while语句之前对循环变量进行初始化。示例中先给i赋值为0,然后在循环体内部必须通过语句更改循环变量的值,否则将会发生死循环。
提示死循环对于单线程程序而言是一场灾难,但是在多线程程序中,死循环是必需的,死循环会出现在子线程中。例如游戏设计中对玩家输入装置的轮询,或是动画程序的播放,都是需要死循环的。下面的代码是死循环的一般写法。
while true { 
    语句组  
}


提示循环是比较耗费资源的操作,如何让开发人员测试和评估循环效率呢?Xcode 6提供的Playground工具可以帮助我们实现这个目的。在Playground界面中打开时间轴。打开Playground界面后运行代码,如下图所示,程序运行过程中会在右边时间轴绘制出一条线段,横轴是经历的时间,纵轴是i值变化,我们在执行完成后拖曳线段,查看运行历史中i值内容。就本例而言,时间轴中的线段越陡,执行的效率越高。



二、do while语句
do while语句的使用与while语句相似,不过do while语句是事后判断循环条件结构,语句格式如下: 
do {
  语句组 
} while 循环条件
do while循环没有初始化语句,循环次数是不可知的,不管循环条件是否满足,都会先执行一次循环体,然后再判断循环条件。如果条件满足则执行循环体,不满足则停止循环。
下面看一个示例代码:

[html] view plaincopy
 
  1. var i:Int64 = 0  
  2.   
  3.   
  4. do{  
  5.     i++  
  6. } while  i * i < 100000  
  7.   
  8.   
  9. println("i = \(i)")  
  10. println("i * i = \(i * i)")  



输出结果如下:
i = 317
i * i = 100489
该示例与上一节的示例是一样的,都是找到平方数小于100 000的最大整数。输出结果也是一样的。
三、for语句
for语句是应用最广泛、功能最强的一种循环语句。一般格式如下: 
for 初始化; 循环条件; 迭代 {
  语句组
}
当程序执行到for语句时,会先执行初始化语句,它的作用是初始化循环变量和其他变量,然后程序会查看循环条件是否满足,如果满足,则继续执行循环体并计算迭代语句,之后再判断循环条件,如此反复,直到判断循环条件不满足时跳出循环。终止语句一般用来改变循环条件,它可对循环变量和其他变量进行操作。 
以下示例代码是计算1~9的平方表程序: 

[html] view plaincopy
 
  1. println("n   n*n")  
  2. println("---------")  
  3. for var i = 1; i < 10; i++  {  
  4.     println("\(i) x \(i) = \(i * i)")  
  5. }  



输出结果如下:
n   n*n
---------
1 x 1 = 1
2 x 2 = 4
3 x 3 = 9
4 x 4 = 16
5 x 5 = 25
6 x 6 = 36
7 x 7 = 49
8 x 8 = 64
9 x 9 = 81
在这个程序的循环部分初始时,给循环变量i赋值为1,每次循环都要判断i的值是否小于10,如果为true,则执行循环体,然后给i加1。因此,最后的结果是打印出1~9的平方,不包括9。 
初始化、循环条件以及迭代部分都可以为空语句(但分号不能省略),三者均为空的时候,相当于一个无限循环。
for ; ;  {
    ......
}
在初始化部分和迭代部分,可以使用逗号语句来进行多个操作。逗号语句是用逗号分隔的语句序列,如下程序代码所示:

[html] view plaincopy
 
  1. var x:Int32  
  2. var y:Int32  
  3.   
  4.   
  5. for x = 0y = 10; x < y; x++, y--  {  
  6.     println("(x,y) = (\(x),\(y))")  
  7. }  



输出结果如下:
(x,y) = (0,10)
(x,y) = (1,9)
(x,y) = (2,8)
(x,y) = (3,7)
(x,y) = (4,6)
四、for in语句
Swift提供了一种专门用于遍历集合的for循环——for in循环。使用for in循环不必按照for的标准套路编写代码,只需要提供一个集合就可以遍历。
假设有一个数组,原来遍历数组的方式如下:

[html] view plaincopy
 
  1. let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
  2.   
  3.   
  4. println("----for-------")  
  5. for var i = 0; i < countElements(numbers); i++ {  
  6.     println("Count is: \(i)")  
  7. }  



输出结果如下:
Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
上述语句let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]声明并初始化了10个元素数组集合,目前大家只需要知道当初始化数组时,要把相同类型的元素放到[…]中并且用逗号分隔(,)即可,关于数组集合我们会在第10章详细介绍。
采用for in循环语句遍历数组的方式如下:

[html] view plaincopy
 
  1. let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];  
  2.   
  3.   
  4. println("----for in----")  
  5. for item in numbers {  
  6.     println("Count is: \(item)")  
  7. }  



输出结果如下:
Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9

从上例可以发现,item是循环变量,item之前使用var声明,它是隐式变量声明的。in后面是集合实例,for in循环语句会将后面集合中的元素一一取出来,保存到item中。可见for in语句在遍历集合的时候要简单方便得多。但是对于其他操作,for in循环就不太适合了。

 

 

更多内容请关注国内第一本Swift图书《Swift开发指南》
本书交流讨论网站:http://www.51work6.com/swift.php
欢迎加入Swift技术讨论群:362298485

 

 

 

 

欢迎关注智捷iOS课堂微信公共平台

分享到:
评论

相关推荐

    Swift中循环语句中的转移语句 break 和 continue

    主要介绍了Swift中循环语句中的转移语句 break 和 continue,本文通过实例代码给大家介绍的非常详细,需要的的朋友参考下

    Swift流程控制之循环语句和判断语句详解

    主要介绍了Swift流程控制之循环语句和判断语句详解,文中还使用了一个游戏例子来讲解循环语句和判断语句的使用,需要的朋友可以参考下

    Swift学习demo.zip

    swift闭包/面向对象/构造函数/可选项/数组/字典/循环语句/代理/闭包/通知/等基础知识/只用于学习/有什么不对的地方请发我邮箱/swift4.0

    Swift中的条件判断、循环、跳转语句基础学习笔记

    if、for和while循环、switch等这些基本的程序流程控制语句基本上是每个编程语言的标配,在入门环节中,这里对Swift中的条件判断、循环、跳转语句基础学习笔记作了一个整理:

    Swift语言全面指南.docx

    简介 在本指南中,我们将深入探讨Swift...控制流:支持if-else条件语句、for-in循环、switch语句等常见控制流。 实战案例 一个简单的待办事项应用 创建项目:在Xcode中创建一个新的iOS应用项目。 设计界面:使用Interf

    Swift编程入门指南.docx

    Swift是一种支持多编程范式和编译式的开源编程语言,由苹果公司于2014年在WWDC(苹果开发者大会)上发布...控制流:Swift提供了各种控制流结构,如if语句、switch语句、for循环和while循环等,用于控制程序的执行流程。

    简单了解Swift语言中的break和continue语句的用法

    主要简单介绍了Swift语言中的break和continue语句的用法,与其他语言的一样用于循环语句流程控制,需要的朋友可以参考下

    Swift教程之控制流详解

    主要介绍了Swift教程之控制流详解,本文详细讲解了Swift中的for循环、for-in循环、For-Condition-Increment条件循环、while循环、Do-while循环、if条件语句等控制流语句,需要的朋友可以参考下

    LTPSwiftDemo:学习编程 Swift 演示

    学习编程 Swift 教程 已完成的主题包括: 变量 创建变量和常量 了解变量类型 算术运算符 类型转换 字符串插值 控制流 如果语句 复杂和复合 If 语句 开关语句 While 循环 For 循环 For...In 循环 数组和字典 创建和...

    100DaysOfSwiftUI:保罗·哈德森(Paul Hudson)举办的100天SwiftUI挑战-https

    100DaysOfSwiftUI Paul Hudson撰写的100天SwiftUI挑战-&gt; 第一天变量。 字符串和整数。 多行字符串。 双打和布尔值。 字符串插值。 常数。 输入注释。 简单类型:摘要。 第二天数组。 套。 元组。 数组vs集vs元组。 ...

    TheSwiftStyleGuide:Swift 编程语言的风格指南

    Swift 编程语言的风格指南 这些指南建立在 Apple 官方参考和示例代码中使用的编码风格,特别是一书中。 本风格指南适用于项目和合作,并不侧重于为印刷和网络节省空间。 为此,请查看 目录 自我的使用 协议一致性 ...

    Computer-Science-with-iOS:iOS中的计算机科学知识,数据结构,算法的集合-Swift

    循环语句分支机构声明带标签的声明控制转移表推迟陈述做陈述编译器控制语句可用条件 视图层次命中测试查看生命周期框架与界限UITableView与UICollectionView UITableView UIScrollView 枚举 高阶函数地图筛选减少 ...

    100-Days-Of-Swift-UI

    Paul Hudson撰写的100天SwiftUI挑战-&gt; 第一天 变量。 字符串和整数。 多行字符串。 双打和布尔值。 字符串插值。 常数。 输入注释。 简单类型:摘要。 第二天 数组。 套。 元组。 数组vs集vs元组。 ...

    Swift翻译GO

    Swift翻译GO 实用翻译中的快速解释 Vogliamo eseguire il codice Presente nel文件“ default.txt” 该限制必须至少包括: 3种数据类型; 整数,布尔值,字符串 一些算术–逻辑–比较运算符; +,-,/,*,!; ==...

    prance:基于语言和LLVM的编译器,用于学习有关面向协议的编程概念的教学

    腾跃基于语言和LLVM的编译器,用于教学/学习概念。...xcodeproj打开prance.xcodeproj运行swift ./DerivedData/prance/SourcePackages/checkouts/LLVMSwift/utils/make-pkgconfig.swift内置在XCode中

    密码生成器:Javascript:修改入门代码

    While循环 If和If / Else语句 提示,确认和警报 数学随机 特征 干净且响应Swift的用户界面。 在8到128个字符之间选择密码长度的选项。 提示选择小写,大写,数字和/或特殊字符。 用于验证输入并确保至少选择一种...

    IOS开发之路–C语言基础知识

    概览 ...今天基础知识分为以下几点内容(注意:循环、条件语句在此不再赘述): Hello World 运行过程 数据类型 运算符 常用函数 Hello World 既然是IOS开发系列首先看一下在Mac OS X中的C的

    python-functions-practice:在Python中练习函数

    用python编写条件语句 使用模数 使用打印输出文本 Swift的 编写一个名为fizzbuzz的函数,该函数具有参数n 。 fizzbuzz对n的值采用数字参数,该值是要打印的最大值。 例如,如果我给您数字10,我希望您的程序从1开始...

    Web-APIs-Quiz:定时多项选择测验

    工具职能对于循环数组事件监听器If和If / Else语句快讯本地存储引导CDN jQuery CDN特征干净且响应Swift的用户界面。 动态更新HTML和CSS。 一个计时器,它为每个错误答案将时间缩短10秒。 计时器达到0时结束测验的...

    服务器端API:天气仪表板

    工具类OpenWeather API AJAX获取方法这个本地存储jQuery CDN Moment.js 引导CDN 字体很棒功能对于循环数组事件侦听器“单击”和“击键” If和If / Else语句产品特点干净且响应Swift的用户界面。 搜索城市的当前天气...

Global site tag (gtag.js) - Google Analytics