Swift中的循环语句

循环语句能够使程序代码重复执行。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. while i * i < 100000 {
  3. i++
  4. }
  5. println("i = \(i)")
  6. 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. do{
  3. i++
  4. } while  i * i < 100000
  5. println("i = \(i)")
  6. 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. for x = 0, y = 10; x < y; x++, y--  {
  4. println("(x,y) = (\(x),\(y))")
  5. }

输出结果如下:
(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. println("----for-------")
  3. for var i = 0; i < countElements(numbers); i++ {
  4. println("Count is: \(i)")
  5. }

输出结果如下:
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. println("----for in----")
  3. for item in numbers {
  4. println("Count is: \(item)")
  5. }

输出结果如下:
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循环就不太适合了。

时间: 2024-10-16 22:22:49

Swift中的循环语句的相关文章

Swift入门篇-循环语句

开始继续分享swift入门篇 中的循环语句. 一:循环语句 1:for 用法 2: for in 用法 3: while 用法 4: do while 用法 for 的用法 一般格式 常见格式:(for格式很多) for 变量 ; 变量<某个值 ; 变量++ 例子 // ------for 的一种用法 for var i = 0 ; i<5 ;i++ { println("i=\(i)") } //-------for 的二种用法 var j = 0 for j = 0 ;

js中的循环语句

js中的循环语句可分为三种:1.while:2.do……while:3.for. while的语法为 while (exp) {    //statements;} var a=1,b=0; while(a<=1000){ if(a%2==0){ if(b%20==0) { document.write("<br>第"+parseInt(b/20+1)+"行偶数"); } document.write(a+"&nbsp"

Swift 中的开关语句switch在swift中的使用

在swift 中使用switch 开关语句在进行匹配的时候不需要在匹配成功的地方加上break了,在swift中它会自动在匹配成功的地方跳出去.不会在向下面执行 example: “let vegetable = "red pepper"switch vegetable {case "celery": let vegetableComment = "Add some raisins and make ants on a log."case &qu

Shell中的循环语句实例

1.for循环语句实例1.1 最基本的for循环 #!/bin/bash for x in one two three four do     echo number $x done 注:"for" 循环总是接收 "in" 语句之后的某种类型的字列表.在本例中,指定了四个英语单词,但是字列表也可以引用磁盘上的文件,甚至文件通配符.实例1.2 #!/bin/bash for x in /var/log/* do     #echo "$x is a file

Python中使用循环语句打印三角形、菱形

前言:在学习开发语言循环语句的使用过程中,经常会打印各种形状来验证对循环语句的熟练掌握程度,接下来就使用python来打印多种形状练习. 如下示例中:变量i用于控制外层循环(图形行数),j用于控制空格的个数,k用于控制星号(*)的个数 1. 打印三角形  1.1 打印直角三角形 #/usr/bin/python rows = int(raw_input('please input a rows:')) i=j=k=1 if rows >= 3: for i in range(0,rows+1):

2.1c#中的循环语句

java中的while循环,do...while循环,for循环在c#中也有且语法和执行过程完全一样,不过c#中引入了一种新的循环foreach 2.1.1基本循环语句 1.while循环:先判断条件是否满足,再执行里面的语句.语法如下 while(条件表达式) { 代码快 } 2.do,,,while循环:先执行再判断条件,所以至少会执行一次.语法如下 do { 代码块 }while(条件表达式) 3.for循环:常常用在确定循环次数的情况下.语法如下 for(表达式1;表达式2;表达式3)

20:python中的循环语句

20.1 while语句 问题描述: 求5!. 提示: 求5的阶乘,即5*4*3*2*1 我总觉得不直观,我想最后打印的是形如:5!= 5*4*3*2*1 = 120 20.1.1 print如何去掉自动换行 怎么去掉换行? 去掉了换行,但是,中间夹有空格,怎么去掉空格? 20.1.2 print如何去掉空格 个人练习:怎么实现从键盘输入一个数(需要判断大于0),计算它的阶乘. 20.2 for语句 问题描述: 写程序把字符串'I love python'以单个字符的形式打印出来. 效果如下:

Python中的循环语句

Python中有while循环和for循环 下面以一个小例子来说明一下用法,用户输入一些数字,输出这些数字中的最大值和最小值 1 array = [5,4,3,1] 2 3 for i in array: 4 print(i) 5 6 largest = None 7 smallest = None 8 while True: 9 num = input("Enter a number: ") 10 if num == "done" : break if len(n

shell中的循环语句

for语法格式 for var in list;do commands done 其中list可以包含: 1) 直接写 for alpha in a b c d;do echo $alpha done 2)变量 list="a b c d" for alpha in $list;do echo $alpha done 在shell执行的时候会进行变量替换,上面的list变量替换之后,for循环的形式和1中的形式一模一样.但是如果为$list加上了引号,即如果写为下面的形式: list=