1、可变参数
/// 可变参数
func sumNumbers(_ numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
调用:
let sum = sumNumbers(1, 2, 3)
print("sum = \(sum)")
//参考:public func print(_ items: Any..., separator: String = " ", terminator: String = "\n")的写法
2、嵌套for循环操作-跳出外部for循环的操作
outer: for i in 0 ... 5 {
for k in 0 ... 4 {
if k == 3 {
continue outer
}
if i == 3 {
break outer
}
print("i = \(i) k = \(k)")
}
}
3、输入输出参数
函数的参数默认是let属性,但如果我们想修改参数的值,需要设置该参数为输入输出参数。两个注意点:
1、输入输出参数需要定义为var属性
2、在读取的时候,需要用“&”
3、可变参数不能用inout
4、inout 参数不能有默认值
5、inout 参数属于地址传递(引用传递)
func changeNumberValue(_ num: inout Int) {
num = 100
}
调用:
var number = 20
changeNumberValue(&number)
print("number = \(number)")
应用:交换两个数 等同 Swift自带的swap方法
func swapValues(_ v1: inout Int, _ v2: inout Int) {
let temp = v1
v1 = v2
v2 = temp
}
4、函数重载(Overload)
1、函数名相同,参数不同
2、注意二义性
5、内联函数(Inline Function)
内联函数在开启项目优化的时候,会自动的将简单函数变成内联函数,而函数则直接展开为函数体
但是:
1、复杂的函数不会进行内联优化
2、递归函数也不会进行内联优化
3、包含动态派发(动态绑定)也不会进行内联优化
网友评论