美文网首页iOS开发应用
Swift语法基础之控制流

Swift语法基础之控制流

作者: 扒皮狼 | 来源:发表于2021-12-24 15:22 被阅读0次

一:介绍

Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的 for 和 while 循环,基于特定条件选择执行不同代码分支的 if 和 switch 语句,还有控制流程跳转到其他代码的 break 和 continue 语句。

除了 C 里面传统的 for 条件递增循环,Swift 还增加了 for-in 循环,用来更简单地遍历数 组(array),字典(dictionary),范围(range),字符串(string)和其他序列类型。

Swift 的 switch 语句比 C 语言中更加强大。在 C 语言中,如果某个 case 不小心漏写了 break,这个 case 就会“掉入”下一个 case,Swift 无需写 break,所以不会发生这种“掉入”的情况。Case 还可以匹配更多的类型模式,包括范围(range)匹配,元组(tuple)和特定类型的描述。switch case 语句中匹配的值可以是由 case 体内部临时的常量或者变量决 定,也可以由 where 分句描述更复杂的匹配条件。

二:If 语句

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 score { ... }这样的代码是错误的。

你可以一起使用 if 和 let 来处理值缺失的情况。有些变量的值是可选的。一个可选的值可能 是一个具体的值或者是 nil,表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。

var optionalString: String? = "Hello"
optionalString == nil

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello, \(name)"
}
print(greeting)

练习:把 optionalName 改成 nil,greeting 会是什么?添加一个 else 语句,当 optionalName 是 nil 时给 greeting 赋一个不同的值。
如果变量的可选值是 nil,条件会判断为 false,大括号中的代码会被跳过。如果不是 nil,会 将值赋给 let 后面的常量,这样代码块中就可以使用这个值了。

三:Switch 语句

switch 支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等。

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

练习: 删除 default 语句,看看会有什么错误?
运行 switch 中匹配到的子句之后,程序会退出 switch 语句,并不会继续向下运行,所以不 需要在每个子句结尾写 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 {
    print(kind)
    for number in numbers {
        largest = number
        print(largest)
    }
}

练习: 添加另一个变量来记录哪种类型的数字是最大的。
你可以在循环中使用...来表示范围,也可以使用传统的写法,两者是等价的:

// for-in 循环范围
var firstForLoop = 0
for i in 0...3 {
firstForLoop += i
}
print(firstForLoop)

五:While 语句

使用 while 来重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾。

var n = 2
var number = 0

while n < 100 {
    number += 1
    n = n * 2
}
print(n,number)

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

相关文章

  • Swift语法基础之控制流

    一:介绍 Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的 for 和 while 循环,基...

  • swift基础语法(控制流)

    一、 If语句 判断句不再有非0/nil即真;都有明确的真假(Bool ---> true/false) 二、三目...

  • Swift 4.0 基础学习总结(二)

    在 Swift 4.0 基础学习总结(一)中,我们学习的Swift中的基本数据类型以及控制流,Swift简介的语法...

  • Swift5 基础教程与进阶合集

    Swift5 基础 Swift5 基础(一)Swift编译流程、基础语法、流程控制、函数、枚举[https://w...

  • Swift基础之控制流

    Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不同代码分支的if、g...

  • Swift 基础之控制流

    Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的 for 和 while 循环,基于特定条件...

  • Swift语法--控制流

    控制流 while、if、guard、switch For-in循环 While循环 while repeat-w...

  • Swift5.1——前言

    主要是针对Swift5.1,基础语法,和内部剖析。 基础语法 基础语法 流程控制 函数 枚举 可选项 为什么选择S...

  • 关于《Swift权威指南》这本书

    《Swift权威指南》 分为两部分,第一部分主要介绍了Swift的基础语法。主要包括运算符、字符串、集合类、控制流...

  • swift基础-控制流

    一、For循环 二、whilewhile循环从计算单一条件开始。如果条件为true,会重复运一系列语句,直到条件变...

网友评论

    本文标题:Swift语法基础之控制流

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