标签:
2.控制流:
主要有三种类型的语句
if,switch和新增的guard
for,while
break,continue
关于if
语句里的条件不再需要使用()包裹了。
1
2
3
4
|
let number = 23 if number < 10 { print( "The number is small" ) } |
但是后面判断执行的的代码必须使用{}包裹住。
if 后面的条件必须为Boolean表达式
也就是不会隐式地与0进行比较,下面这种写法是错误的,因为number并不是一个boolean表达式,number != 0才是。
1
2
3
|
int number = 0 if number{ } |
关于for
for循环在Swift中变得更方便,更强大。
得益于Swift新添加的范围操作符...与...<
我们能够将之前繁琐的for循环:
1
2
3
4
|
for (int i = 1; i <= 5; i++) { NSLog(@ "%d" , i); } |
改写为:
1
2
3
|
for index in 1...5 { print(index) } |
虽然在《The Swift Programming Language》里面没有提到类似的用法,但是在Swift中我们也有优雅的方法办到。
1
2
3
|
for index in stride(from: 1, through: 5, by: 2) { print(index) } // through是包括5 |
然后对字典的遍历也增强了.在Objective-c的快速枚举中我们只能对字典的键进行枚举。
1
2
3
4
|
NSString *key; for (key in someDictionary){ NSLog(@ "Key: %@, Value %@" , key, [someDictionary objectForKey: key]); } |
而在Swift中,通过tuple我们可以同时枚举key与value:
1
2
3
4
|
let dictionary = [ "firstName" : "Mango" , "lastName" : "Fang" ] for (key,value) in dictionary{ print(key+ " " +value) } |
关于Switch:
Swich在Swift中也得到了功能的增强与安全性的提高。
不需要Break来终止往下一个Case执行
也就是下面这两种写法是等价的。
1
2
3
4
5
6
7
8
9
|
let character = "a" switch character{ case "a" : print( "A" ) break case "b" : print( "B" ) break default : print( "character" ) |
1
2
3
4
5
6
7
|
let character = "a" switch character{ case "a" : print( "A" ) case "b" : print( "B" ) default : print( "character" ) |
这种改进避免了忘记写break造成的错误,自己深有体会,曾经就是因为漏写了break而花了一段时间去debug。
如果我们想不同值统一处理,使用逗号将值隔开即可。
1
2
3
4
|
switch some value to consider { case value 1,value 2: statements } |
在Swift中,Switch支持的类型大大的拓宽了。
这意味在开发中我们能够能够对字符串,浮点数等进行匹配了。
之前在OC繁琐的写法就可以进行改进了:
1
2
3
4
5
6
7
8
9
|
if ([cardName isEqualToString:@ "Six" ]) { [self setValue:6]; } else if ([cardName isEqualToString:@ "Seven" ]) { [self setValue:7]; } else if ([cardName isEqualToString:@ "Eight" ]) { [self setValue:8]; } else if ([cardName isEqualToString:@ "Nine" ]) { [self setValue:9]; } |
1
2
3
4
5
6
7
8
9
10
|
switch carName{ case "Six" : self.vaule = 6 case "Seven" : self.vaule = 7 case "Eight" : self.vaule = 8 case "Night" : self.vaule = 9 } |
标签:
原文地址:http://www.cnblogs.com/pengsi/p/5120310.html