Swift学习 (二)

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   
}

 

 

posted on 2016-01-11 10:10  玉思盈蝶  阅读(182)  评论(0编辑  收藏  举报

导航