美文网首页
Swift-控制流

Swift-控制流

作者: Joker_King | 来源:发表于2016-11-16 16:24 被阅读12次

    使用if和switch来创建条件,并使用for-in,for,while和repeat-while来创建循环。 条件语句或循环变量的圆括号可以选择不写。 函数体周围的大括号是必需的。

    let individualScores = [75, 43, 103, 87, 12]
    var teamScore = 0
    for score in individualScores {
        if score > 50 {
            teamScore += 3
        } else {
            teamScore += 1
        }
    }
    print(teamScore)
    

    if语句

    在if语句中,条件必须是布尔表达式 - 这意味着诸如if score {...}之类的代码是错误,在swift中没有0和1之类的隐式比较。

    • 你可以使用if和let一起创建一个缺省值。 这些值表示为可选。 可选值可能是一个值或是nil。 在值的类型后面写入问号(?)以将该值标记为可选。
    var optionalString: String? = "Hello"  //声明了一个可选类型的变量
    print(optionalString == nil)  //"false\n"
    
    var optionalName: String? = nil
    var greeting = "Hello!"
    if let name = optionalName { //如果可选值为nil,则条件为false,并且大括号中的代码将被跳过。 否则,可选值将被展开,并分配给let之后常量,使得展开的值在代码块中可用。
        greeting = "Hello, \(name)"
    }else{//条件不成立
        greeting = "Hello, nil"
    }
    
    • 另一种处理可选值的方法是使用??提供一个默认值。 运算符。 如果缺少可选值,则使用默认值。
    let nickName: String? = nil
    let fullName: String = "John Appleseed"
    let informalGreeting = "Hi \(nickName ?? fullName)"
    

    switch

    switch支持任何类型的数据和各种比较操作 - 不仅限于整数。

    let vegetable = "red pepper"
    switch vegetable {
        case "celery":
            print("Add some raisins and make ants on a log.")
        case "cucumber", "watercress":
            print("That would make a good tea sandwich.")
        case let x where x.hasSuffix("pepper"):
            print("Is it a spicy \(x)?")
        default:
            print("Everything tastes good in soup.")
    }
    

    在case中执行匹配的代码后,程序退出switch语句。 语句不会继续到下一个case,因此没有必要在每个case的代码结束时加上break。

    for-in

    您可以使用for-in通过为每个键值对提供一对名称来遍历字典中的项目。 字典是一个无序的集合,所以它们的键和值以任意顺序迭代。

    let interestingNumbers = [
        "Prime": [2, 3, 5, 7, 11, 13],
        "Fibonacci": [1, 1, 2, 3, 5, 8],
        "Square": [1, 4, 9, 16, 25],
    ]
    var largest = 0
    for (kind, numbers) in interestingNumbers {
        for number in numbers {
            if number > largest {
                largest = number
            }
        }
    }
    print(largest)
    

    你可以通过使用.. <使循环的范围保持索引在范围中。
    使用.. <创建一个省略其上限值的范围,并使用...创建一个包含这两个值的范围。

    var total = 0
    for i in 0..<4 {
        total += i
    }
    print(total)
    

    while先判断在执行

    var n = 2
    while n < 100 {
        n = n * 2
    }
    print(n)
    

    repeat-while,先执行条件在判断

    var m = 2
    repeat {
        m = m * 2
    } while m < 100
    print(m)
    

    相关文章

      网友评论

          本文标题:Swift-控制流

          本文链接:https://www.haomeiwen.com/subject/ipsrpttx.html