输入输出参数(In-Out Parameter)
2019-09-27 本文已影响0人
坤哥爱卿
下面我们通过交换两个参数值的方式讲解一下
可以用inout定义一个输入输出参数:可以在函数内部修改外部实参的值(类似于系统提供的swap交换方法)
//输入输出参数
var v1 = 20
var v2 = 30
func swapValue(_ v1: inout Int,_ v2: inout Int){
let tmp = v1
v1 = v2
v2 = tmp
}
swapValue(&v1, &v2)
print(v1,v2)
注意:
1. 可变参数不能用inout标记
2. inout不能有默认值
3. inout参数的本质是地址传递(引用传递),可以用汇编的方式验证,playground中是不能显示汇编的
4. inout参数只能传入可被多次赋值的(变量)
也可以用元组的方式交换两个参数的值(更简便)
//元组方式交换值
var v1 = 40
var v2 = 50
func swapValues(_ v1: inout Int,_ v2: inout Int){
(v1,v2) = (v2,v1)
}
swapValues(&v1, &v2)
print(v1,v2)