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:不对于分支结构,也不对于循环结构,而是针对于方法或函数:结束一个函数或方法。
网友评论