# 【Swift 5.1】流程控制、函数与内联函数优化

## 1.1 while循环

eg1. 简单的打印例子1

var num = 10
while num > 0 {
print("num is \(num)")
num -= 1
} // 打印num 5次

eg2.简单的打印例子2

var num = -1
repeat {
print("num is \(num)")
}while num > 0 // 打印了1次num

repeat-while 相当于C语言的do-while

## 1.2.1 区间运算符

eg1.遍历列表

let names = ["MM", "YY", "HH", "HM"]
for i in 0...3 {
print(names[i])
} // MM YY HH HM(一行一个名字)

for var i in 0...3 {
i += 10
print(i)
} // 10 11 12 13

eg2. 区间运算符在数组上的使用

let names = ["MM", "YY", "HH", "HM"]
for name in names[0...3] {
print(names[item])
} MM YY HH HM(一行一个名字)

## 1.3 switch语句

switch必须要保证能处理所有情况

case、default后面至少要有一个语句

var num = 1
switch num {
case 1:
print("1")
case 2:
print("2")
default:
print("other")
} // 1

## 1.4 fallthrough语句

fallthrough可以实现贯穿效果，如下代码块儿，输出为1、2。

var num = 1
switch num {
case 1:
print("1")
fallthrough
case 2:
print("2")
default:
print("other")
} // 1 2

## 1.5 区间匹配、元组匹配与值

let num = 21
switch num {
case 0:
print("0")
case 1..<10:
print("[1,10)")
case 10..<21:
print("[10,21)")
case 21..<30:
print("[21,30)")
default:
print("other")
} // [21,30)

let point = (1, 1)
switch point {
case (0, 0):
print("the origin")
case (_, 0):
print("on the x-axis")
case (0, _):
print("on the y-axis")
case (-2...2, -2...2):
print("inside the box")
default:
print("outside of the box")
} // inside the box

l

et point = (2, 1)
switch point {
case (let x, 1):
print("x = \(x)")
case (1, let x):
print("x = \(x)")
default:
print("other")
} // x = 2

## 1.6 where语句

where用于添加约束条件，我们来看下面这个例子：

let point = (1, 1)
switch point {
case let (x, y) where x == y:
print("x == y")
case let (x, y) where x == -y:
print("x == -y")
default:
print("other")
} // x == y

eg1.求列表的正数和

var numbers = [-3, -2, -1, 0, 1, 2, 3]
var sum = 0
for number in numbers where number > 0{
sum += number
}
print(sum) // 6

## 2.1 函数的定义

func pi() -> Double{
return 3.1415926
}
print(pi()) // 3.1415926
func sum(n1: Int, n2: Int) -> Int{
return n1 + n2
}
print(sum(n1: 1, n2: 5)) // 6

func say1() -> Void{
print("你好1")
}
func say2() -> (){
print("你好2")
}
func say3(){
print("你好3")
}

## 2.2 隐式返回

func sum(n1: Int, n2: Int) -> Int{
n1 + n2
}
print(sum(n1: 1, n2: 5)) // 6

## 2.4 参数标签

func caculate(n1: Int, n2: Int) -> (sum: Int, average: Double){
let sum = n1 + n2
let average = Double(sum) / 2
return(sum, average)
}
let result = caculate(n1: 10, n2: 5)
print("sum = \(result.sum)") // sum = 15
print("average = \(result.average)") // average = 7.5

func goToStudy(at time: String){
print("This time is \(time), we should go to study now!")
}
goToStudy(at: "06:00") // This time is 06:00, we should go to study now!

func caculate(_ n1: Int, _ n2: Int) -> (sum: Int, average: Double){
let sum = n1 + n2
let average = Double(sum) / 2
return(sum, average)
}
let result = caculate(10, 5)
print("sum = \(result.sum)") // sum = 15
print("average = \(result.average)") // average = 7.5

## 2.5 函数参数默认值

func say(girl: String = "Lingling", boy: String = "xiaoming"){
print("\(girl) and \(boy) is a good friend!")
}
say(girl: "Miao") // Miao and xiaoming is a good friend!
say() // Lingling and xiaoming is a good friend!
say(boy: "Huang") // Lingling and Huang is a good friend!

## 2.6 输入输出参数

var num = 0
func test(_ num:  inout Int){
num = 10
}
test(&num)
print(num) // 10

## 2.7 可变参数

func sum(_ numbers: Int...) -> Int{
var sum = 0
for number in numbers{
sum += number
}
return sum
}
sum(1, 2, 3, 4, 5) // 15

## 3.内联优化（内联函数）

func test(){
print("123")
}
test() // 123
// 由于方法体只有一个打印语句，编译器便不再调用test()，而是通过内联优化直接print
print("123") // 123

|
4天前
|
Swift C++ 索引
Swift开发——简单函数实例

20 5
|
28天前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
20 0
|
1月前
|

【Swift开发专栏】Swift的编译优化与构建配置
【4月更文挑战第30天】Swift编译优化与构建配置对开发效率和应用性能至关重要。编译优化包括不同级别的优化、函数内联、泛型特化、尾递归优化、死代码消除和链接时优化。在Xcode的&quot;Build Settings&quot;中可调整相关标志。构建配置涉及Debug与Release模式、自定义配置、条件编译、构建设置和脚本。开发时，应适时测试、选择适当优化级别、避免过度优化，并利用条件编译区分不同版本的代码。有效管理构建设置可提升开发质量和性能。
25 0
|
1月前
|

【Swift开发专栏】Swift函数与闭包的实战应用
【4月更文挑战第30天】本文介绍了 Swift 中函数和闭包的实战应用。首先，函数的基本使用包括定义、参数与返回值、函数类型以及高级技巧如嵌套函数。接着，讨论了闭包的语法，包括无名函数、作为函数参数、简写形式和尾随闭包。最后，展示了函数和闭包在实战中的应用，如排序过滤集合和处理异步任务的回调。
14 0
|
1月前
|

【Swift开发专栏】Swift应用的启动优化
【4月更文挑战第30天】本文介绍了Swift应用启动优化技巧，包括优化代码结构和资源加载。建议减少启动时加载的代码，采用延迟加载、分模块加载和懒加载策略；优化初始化代码，注意顺序、异步初始化和避免全局初始化。对于资源，压缩图片、使用矢量图和图片缓存可提升加载速度。文中还提供了实战案例，展示如何在代码中实施这些优化措施。
34 1
|
1月前
|

Swift 语言：什么是闭包（Closure）？它们与函数的区别是什么？
Swift 语言：什么是闭包（Closure）？它们与函数的区别是什么？
51 1
|
1月前
|
Swift
Swift中的函数
Swift中的函数
28 1
|
1月前
|

Swift中，函数和闭包
Swift中，函数和闭包
40 1
|
8月前
|
Swift iOS开发
23 Swift中如何定义和使用函数
Swift中如何定义和使用函数
60 0
|
9月前
|
Swift
Swift Debug 和 Release 中 print() 函数调试切换
Swift Debug 和 Release 中 print() 函数调试切换
47 0