Swift 笔记 (五) —— 控制流

控制流(Control Flow)
我不想这么译的。。。我更想叫控制语句,但是想想,这么叫也没错,意指流程控制。
大部分用法跟C类似

switch 不是必须用break了,因为在C里面太常见的错误就是忘记加break导致奇怪问题的发生
case在Swift中增强了功能,可以用范围表示,也可以用元组,值的类型也可以是混杂的

for循环
for-in  这个我们已经见过很多了
for-condition-increment 类似C里的用法

for var index = 0; index < 3; ++index {
     println(“index is \(index)")
}

或者:

var index:Int
for index = 0; index < 3; ++index {
     println(“index is \(index)")
}

while循环
var count = 0
var index = 10
while index > 0 {
     count += index
     --index           //这里很有趣,如果这句忘记写的话,playground的右边的数字会一直加一直加。。。。
}
println(count)

或者

do {
     count += index
     --index
} while index > 0
println(count)

条件语句
if…{} else {} 前面已经见过了

switch值得说说:
直接帖官方的例子


这里要说的是,swfit依然是大小写敏感的!

let count = 15
switch count {
case 0:
     xxx
case 1 10:
     xxx
case 11 20:
     xxx
default:
     xxx
}

let myPoint = (1, 3)
switch myPoint {
case (0, 0):
     xxx
case ( _, 0):     
     xxx
case (1,   _):      //所有的第1个为1的元组,都会被捕捉到
     xxx
default:
     xxx
}

接下来更神奇的来了。。。:

let myPoint = (2, 0)
switch myPoint {
case (let x, 0):
     xxxx
case (0, let y):
     xxxx
case let (x, y):
     xxxx
}
这种奇怪的方式,还挺有用的感觉,既定义了变量,又保存了数值,第一个case,匹配所有的y=0的point,如果x和y都不是0的话,自然就匹配到了第三个case,而且,第三个case是不用分别给x,y写let的。。。

switch的where子句
更有意思的是,case里可以写where。。。可能这是因为在case里可以定义变量并赋值,而带来的方便用法吧:
let myPoint = (1, -1)
switch myPoint {
case let (x, y) where x == y:
     xxx
case let (x, y) where x == -y:
     xxx
case let (x, y):
     xxx
}
不多解释了,名如其字

Control Transfer Statement 
continue
break
fallthrough
return

continue,break, return 常规的用法就不说了,fallthroug...这个诡异的东西,从名字以及之前提到的switch并不是非要写break可以看出来,他是来让case执行完之后继续执行下一个case的东西,直接帖官方的例子:


那么,我们还是来看看 continue和break的新坑爹玩法吧.
苹果在这个新坑爹玩法之前,引入了一个新东西:Labeled Statements (感谢群友Shawn·Shoper的更正,这个玩意在java和go里都已经有了)
所谓的Labeled Statements就是给代码的某个地方打个标签,然后之后用某种方法再跳回到标签位置。。。是不是听起来像某些语言里的goto语句。。。

myLabel: while xxx  {
     switch xx {
     case xxx:
          break myLabel
     case xxx:
          continue myLabel
     default:
          xxx
     }
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值