• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift教程之控制流详解

Swift教程之控制流详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了swift教程,ios swift教程,swift教程pdf,swift语言教程,swift视频教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Swift提供了所有C语言中相似的控制流结构。包括for和while循环;if和switch条件语句;break和continue跳转语句等。

Swift还加入了for-in循环语句,让编程人员可以在遍历数组,字典,范围,字符串或者其它序列时更加便捷。

相对于C语言,Swift中switch语句的case语句后,不会自动跳转到下一个语句,这样就避免了C语言中因为忘记break而造成的错误。另外case语句可以匹配多种类型,包括数据范围,元组,或者特定的类型等。switch语句中已匹配的数值也可以被用在后续的case语句体中,where关键词还能被加入任意的case语句中,来增加匹配的方式。

1、for循环

for循环可以根据设置,重复执行一个代码块多次。Swift中提供了两种for循环方式:
for-in循环,对于数据范围,序列,集合等中的每一个元素,都执行一次
for-condition-increment,一直执行,知道一个特定的条件满足,每一次循环执行,都会增加一次计数

for-in循环

下面的例子打印出了5的倍数序列的前5项

for index in 1...5 {
println("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
</div>

迭代的项目是一个数字序列,从1到5的闭区间,通过使用(…)来表示序列。index被赋值为1,然后执行循环体中的代码。在这种情况下,循环只有一条语句,也就是打印5的index倍数。在这条语句执行完毕后,index的值被更新为序列中的下一个数值2,println函数再次被调用,一次循环直到这个序列的结尾。

在上面的例子中,index在每一次循环开始前都已经被赋值,因此不需要在每次使用前对它进行定义。每次它都隐式地被定义,就像是使用了let关键词一样。注意index是一个常量。

注意:index只在循环中存在,在循环完成之后如果需要继续使用,需要重新定义才可以。

如果你不需要序列中的每一个值,可以使用_来忽略它,仅仅只是使用循环体本身:

let base = 3
let power = 10
var answer = 1
for _ in 1...power {
answer *= base
}
println("\(base) to the power of \(power) is \(answer)")
// prints "3 to the power of 10 is 59049"
</div>
这个例子计算了一个数的特定次方(在这个例子中是3的10次方)。连续的乘法从1(实际上是3的0次方)开始,依次累乘以3,由于使用的是半闭区间,从0开始到9的左闭右开区间,所以是执行10次。在循环的时候不需要知道实际执行到第一次了,而是要保证执行了正确的次数,因此这里不需要index的值。

同理我们可以使用for-in来循环遍历一个数组的元素

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
println("Hello, \(name)!")
}
// Hello, Anna!
// Hello, Alex!
// Hello, Brian!
// Hello, Jack!
</div>

在遍历字典的时候,可以使用key-value对来进行遍历。每一个字典中的元素都是一个(key, value)元组,当遍历的时候,可以指定字段的key和value为一个特定的名称,这样在遍历的时候就可以更好地理解和使用它们,比如下面例子中的animalName和legCount:

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
println("\(animalName)s have \(legCount) legs")
}
// spiders have 8 legs
// ants have 6 legs
// cats have 4 legs
</div>

字典中的元素在遍历的时候一般不需要按照插入的顺序,因此不能保证遍历字典的时候,元素是有序的。更多跟数组和字典相关的内容可以参考:Collection Types

另外在数组和字典中也可以使用类似的遍历方式,如可以使用for-in循环来遍历字符串中的每一个字符:

for character in "Hello" {
println(character)
}
// H
// e
// l
// l
// o
</div>

For-Condition-Increment条件循环

Swift同样支持C语言样式的for循环,它也包括了一个条件语句和一个增量语句:

for var index = 0; index < 3; ++index {
println("index is \(index)")
}
// index is 0
// index is 1
// index is 2
</div>
下面是这种for循环的一般结构:

for initialization; condition; increment {
statements
}
</div>

分号在这里用来分隔for循环的三个结构,和C语言一样,但是不需要用括号来包裹它们。

这种for循环的执行方式是:

1、当进入循环的时候,初始化语句首先被执行,设定好循环需要的变量或常量

2、测试条件语句,看是否满足继续循环的条件,只有在条件语句是true的时候才会继续执行,如果是false则会停止循环。

3、在所有的循环体语句执行完毕后,增量语句执行,可能是对计数器的增加或者是减少,或者是其它的一些语句。然后返回步骤2继续执行。

这种循环方式还可以被描述为下面的形式:

initialization
while condition {
statements
increment
}
</div>
在初始化语句中被定义(比如var index = 0)的常量和变量,只在for循环语句范围内有效。如果想要在循环执行之后继续使用,需要在循环开始之前就定义好:

var index: Int
for index = 0; index < 3; ++index {
println("index is \(index)")
}
// index is 0
// index is 1
// index is 2
println("The loop statements were executed \(index) times")
// prints "The loop statements were executed 3 times"
</div>

需要注意的是,在循环执行完毕之后,index的值是3,而不是2。因为是在index增1之后,条件语句index < 3返回false,循环才终止,而这时,index已经为3了。

2、while循环

while循环执行一系列代码块,直到某个条件为false为止。这种循环最长用于循环的次数不确定的情况。Swift提供了两种while循环方式:

while循环,在每次循环开始前测试循环条件是否成立

do-while循环,在每次循环之后测试循环条件是否成立

while循环

while循环由一个条件语句开始,如果条件语句为true,一直执行,直到条件语句变为false。下面是一个while循环的一般形式:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift 教程
  • iOS开发中Swift 指纹验证功能模块实例代码
  • swift在IOS应用图标上添加提醒个数的方法
  • Swift自定义iOS中的TabBarController并为其添加动画
  • Swift操作Quartz 2D进行简单的绘图与坐标变换的教程
  • 使用Swift实现iOS App中解析XML格式数据的教程
  • 用Swift构建一个简单的iOS邮件应用的方法
  • Swift教程之类的析构详解
  • Swift教程之继承详解
  • Swift教程之下标详解

相关文章

  • 2017-05-28MyBatis中SqlSession实现增删改查案例
  • 2017-05-28Swift教程之继承详解
  • 2017-05-28Swift调用Objective-C代码
  • 2017-05-22Swift 属性
  • 2017-05-28通过一个map替换字符串中指定的字符变量方法
  • 2017-05-28Swift中的访问控制和protected
  • 2017-05-28详解Swift面向对象编程中的方法(method)
  • 2017-05-28Mybatis传list参数调用oracle存储过程的解决方法
  • 2017-05-28Swift教程之控制流详解
  • 2017-05-28Swift心得笔记之运算符

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Swift语言实现地图坐标弹跳动画
    • Swift 3.0将UILabel数字颜色设置为红色的方法
    • 详解Swift编程中的for循环的编写方法
    • MyBatis 参数类型为String时常见问题及解决方法
    • 超全面的Swift编码规范(推荐)
    • Swift内置的数字类型及基本的转换方法
    • Swift 数组
    • Swift开发之UITableView状态切换效果
    • Swift中使用可选类型完美解决占位问题
    • Mybatis接口式编程的原理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有