每天学一点Swift----流程控制(一)

1.不论哪一种编程语言都会提供两个基本的流程控制结构:分支结构和循环结构。

一.顺序结构

1. if,if...else,if...else if...

****其中,if后的条件表达式可以是任意类型的表达式,,即这个表达式的返回值可以是任意类型。0或空表示假,非0或非空代表真。

2. Swift中,if后的条件表达式的语句可以不放在括号中。****但是条件表达式后的执行语句必须放在花括号中,这也是Swift的if语句更健壮的原因之一。

3. switch条件判断:和Java中相同的是Swift中也是又switch expression和case语句构成的,case语句覆盖不了的情况用default。*****和Java中不同的是,Swift中不存在隐式贯穿和显示贯穿。即,在Swift中,每一个case语句块结束后都会自动终止switch语句,不会继续执行下一个case语句块,要想使多个case条件执行同一条执行

语句,可以将多个条件表达式写在一个case后面,之间用逗号分割。举个栗子:

switch expresson

{

case "A":

case "a":

print("level -- A")----编译时报错

}

正确的写法如下:

switch expression

{

case "A", "a":

print("level -- A")

case "B", "b":

print("level -- B")

}

4.当然在某些情况下,case语句也可以使用break来结束switch,比如说case语句块中也是一个条件语句。

5. switch的范围匹配:Swift中switch语句的功能比Java中的要强大很多,*****它的case后的条件还可以是一个范围。

举个栗子:

var score = 80;

switch score

{

case 90...100:

print("优秀")

case 80...89:

print("良好")

case 70...79:

print("中等")

case 60...69:

print("及格")

case 0..<60:

print("不及格")

default:

break

}

6. switch的元组匹配:Swift中,switch语句还支持使用元组匹配多个值,case后面的元组既可以是单独的值,也可以是特定的范围,还可以在范围中使用下划线来匹配所有可能的值。举个栗子:

下面的代码可以用于判断一个点处于坐标系的哪个象限。

var point = (x:1, y:-4)

switch point

{

case (0, 0):

print("原点")

case (_, 0):

print("X轴")

case (0, _):

print("Y轴")

case (0...Int.max, 0...Int.max):

print("第一象限")

case (Int.min..<0, 0...Int.max):

print("第二象限")

case (Int.min..<0, Int.min..<0):

print("第三象限")

case (0...Int.max, Int.min..<0):

print("第四象限")

default:

break;

}

7. switch中case的值绑定:Swift允许将匹配该case块的switch表达式的值绑定到一个临时的变量或常量,这样程序即可在该case块中通过该变量或常量来访问switch表达式的值。举个栗子:

var score = 124;

switch score

{

case 60...100:

print("良好")

case 0...60:

print("不及格")

case let grade:

print("输入有误")

}

上面程序中,不再需要default,因为使用来grade之后匹配来所有的情况。

对于switch中使用元组的情况,使用值绑定就更加灵活,举个栗子:

var point = (x:1, y:-4)

switch point

{

case (0, 0):

print("原点")

case (var x, 0):

print("X轴")

case (0, var y):

print("Y轴")

case var (x, y):

print("不在坐标轴上")

}

8. switch中case的where字句:where字句可以用于给case增加额外的判断条件。举个栗子:

var point = (x:1, y:-4)

switch point

{

case (0, 0):

print("原点")

case (var x, 0):

print("X轴")

case (0, var y):

print("Y轴")

case var (x, y) where x>0 && y>0:

print("第一象限")

case var (x, y) where x<0 && y>0:

print("第二象限")

case var (x, y) where x<0 && y<0:

print("第三象限")

case var (x, y) where x>0 && y<0:

print("第四象限")

default:

break;

}

二.循环结构

1. while、do...while、for。----条件表达式可以不放在圆括号中,但是,执行的语句必须放在花括号中。

2. for-in循环:

(1)for-in循环中使用的是常量

(2)for-in循环中的常量无须声明类型----不同于java,也不需要使用let进行声明

(3)如果循环体内无须访问正在遍历的元素的值,可以用下划线代替常量名来忽略访问元素的值。----举个栗子:

var str = "abcdef";

for _ in str

{

print("")

}

三.控制循环结构

1. break:结束break所在的最里面一层的循环---只对于循环结构,不对于分支结构。

2. continue:结束本次循环的剩余语句,进行下一次循环。

3. return:不对于分支结构,也不对于循环结构,而是针对于方法或函数:结束一个函数或方法。

你可能感兴趣的:(每天学一点Swift----流程控制(一))