1仪搔、可變參數(shù)
/// 可變參數(shù)
func sumNumbers(_ numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
調(diào)用:
let sum = sumNumbers(1, 2, 3)
print("sum = \(sum)")
//參考:public func print(_ items: Any..., separator: String = " ", terminator: String = "\n")的寫法
2瘾婿、嵌套for循環(huán)操作-跳出外部for循環(huán)的操作
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、輸入輸出參數(shù)
函數(shù)的參數(shù)默認是let屬性烤咧,但如果我們想修改參數(shù)的值偏陪,需要設(shè)置該參數(shù)為輸入輸出參數(shù)。兩個注意點:
1煮嫌、輸入輸出參數(shù)需要定義為var屬性
2笛谦、在讀取的時候,需要用“&”
3昌阿、可變參數(shù)不能用inout
4饥脑、inout 參數(shù)不能有默認值
5恳邀、inout 參數(shù)屬于地址傳遞(引用傳遞)
func changeNumberValue(_ num: inout Int) {
num = 100
}
調(diào)用:
var number = 20
changeNumberValue(&number)
print("number = \(number)")
應(yīng)用:交換兩個數(shù) 等同 Swift自帶的swap方法
func swapValues(_ v1: inout Int, _ v2: inout Int) {
let temp = v1
v1 = v2
v2 = temp
}
4、函數(shù)重載(Overload)
1灶轰、函數(shù)名相同谣沸,參數(shù)不同
2、注意二義性
5笋颤、內(nèi)聯(lián)函數(shù)(Inline Function)
內(nèi)聯(lián)函數(shù)在開啟項目優(yōu)化的時候乳附,會自動的將簡單函數(shù)變成內(nèi)聯(lián)函數(shù),而函數(shù)則直接展開為函數(shù)體
但是:
1伴澄、復(fù)雜的函數(shù)不會進行內(nèi)聯(lián)優(yōu)化
2赋除、遞歸函數(shù)也不會進行內(nèi)聯(lián)優(yōu)化
3、包含動態(tài)派發(fā)(動態(tài)綁定)也不會進行內(nèi)聯(lián)優(yōu)化