Swift(三):流程控制(if-else, while, for, 区间类型, switch, 标签语句)

if-else

  • if后面的条件可以省略小括号  
  • if条件后面的大括号不可以省略

                  

  • if后面的条件只能是Bool类型

-------------------------------------------------------------------------------------------------------------------------------

while

  • repeat-while相当于C语言中的do-while
  • 这里不用num--,是因为从Swift3开始,去除了自增(++)、自减(--)运算符

-------------------------------------------------------------------------------------------------------------------------------

for

  • 闭区间运算符:a...b, a <= 取值 <= b

  • 也可以用一个常量来表示区间

  • 也可以用两个常量(或变量)来表示区间

  • i默认是let,有需要时可以声明为var

  • 不用i的时候,可以用_省略,否则会报警告

  • 半开区间运算符:a..<b,  a <= 取值 < b

  • for 区间运算符用在数组上

  • 单侧区间:让区间朝一个方向尽可能的远

  三个数组区间表示2到无穷,负无穷到2,负无穷到小于2

 

range表示负无穷到5:

 区间类型

  • 定义整型区间类型

  • 定义字符串型区间类型(双引号例如"a"默认类型是字符串类型,只有加上Characte才是字符类型)

  • 定义字符型区间类型("\0"..."~"表示0~127)

  • 带间隔的区间值

-------------------------------------------------------------------------------------------------------------------------------

switch

  • case, default后面不能写大括号{}

  • 默认可以不写break,并不会贯穿到后面的条件

  • 使用fallthrough可以实现贯穿效果

可以看到在case 1加了fallthrough后,就回贯穿到case 2同时输出case 2的结果,但由于case 2没有写fallthrough,所以不会贯穿到default,不会输出default的结果

  • switch注意点
  1. switch必须保证能处理所有情况

     2. case, default后面至少有一条语句

     3.  如果不想做任何事,加个break即可

4.   如果能保证已处理所有情况,也可以不必使用default

  • 复合条件

也就是case的条件可以有多个(类似于使用fallthrough),同时switch也支持Character,String类型

  • 区间匹配,元组匹配

(_, 0)表示左边可以是任意值,右边是0的元祖

可以使用下划线_忽略某个值

关于case的匹配问题,属于模式匹配(patter Matching) 的范畴

  • 值绑定

下面的代码表示匹配到右边为0的元祖,并将左边的值赋值符合条件的case里

 最后的输出为:on the x-axis with an x value of 2

必要时let也可以改为var

  • where

  这里主要是把point(1, 1)传给(x, y)然后通过where判断关于xy的条件是否成立, 最后的结果为 on the line x == -y

  这里是将所欲大于0的num相加,结果为60

-------------------------------------------------------------------------------------------------------------------------------

标签语句

通过标签语句,我们可以实现从内部的for循环直接退出最外层for循环

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章