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

43 篇文章 0 订阅
42 篇文章 0 订阅

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

  .顺序结构

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

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

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

  3. switch条件判断:和Java中相同的是Swift中也是又switch expressioncase语句构成的,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的范围匹配:Swiftswitch语句的功能比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. switchcase的值绑定: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. switchcasewhere字句: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循环:

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

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

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

.控制循环结构

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

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

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


上一篇:每天学一点Swift----运算符与表达式(二)

下一篇:每天学一点Swift----集合(一)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值