• 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   
    }
  • 相关阅读:
    【css】容器撑满浏览器--- height:100%
    【实践】js六道有趣的题
    【Canvas】树冠
    asp.net上传Excel文件到服务端进行读取
    HttpContext.Current多线程调用
    abstract修饰符,具体类与抽象类的区别
    如何快速恢复MyEclipse的默认主题
    日历源代码
    for语句应用:乘法表
    Java的优先级
  • 原文地址:https://www.cnblogs.com/pengsi/p/5120310.html
Copyright © 2020-2023  润新知