美文网首页
每天学一点Swift----流程控制(一)

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

作者: 冯可乐同学 | 来源:发表于2017-05-15 22:01 被阅读39次

    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----流程控制(一)

          本文链接:https://www.haomeiwen.com/subject/zehkxxtx.html