inout:输入输出参数,可以在函数内部修改外部实参的值。
- inout参数不能有默认值
- 只能传入可变参数,(类似Int...)不能标记为inout
- inout参数本质是地址传递的
func changeValues(_ v1: inout Int, _ v2: inout Int) {
v1 = 30
v2 = 40
}
changeValues(&num1, &num2)
print(num1,num2) // 30 40
给定一个数组,要求写一个函数,交换数组中的两个元素
传统写法
func exchangeArr<T>(_ arr:inout [T], _ a: Int, _ b: Int) {
let tem = arr[a]
arr[a] = arr[b]
arr[b] = tem
}
元祖写法
func exchangeElement<T>(_ arr1: inout [T],_ a: Int, _ b: Int) {
(arr1[a],arr1[b]) = (arr1[b],arr1[a])
}