1.概述
inout
关键字表示将值类型的对象用引用的方式传递。
2.细解
2.1 值类型:对象传递方式是按值传递
let a:Int = 1;
var b:Int = a;
b += 1;
print(a,b);//1,2
2.2 引用类型(类对象):对象传递方式是按址传递
let person1 = Person.init();
person1.name = "name1";
let person2 = person1;
persong2.name = "name2";
print(p1.name,p2.name);//name2,name2
2.3 使用inout关键字:inout必须用在参数中
使用inout
关键字可以使得值类型的对象和引用类型的对象一样,以按址传递的方式进行操作。
//主方法中
var a:Int = 1;
testMethod(a: &a);//注意这里使用取址操作
print(a);//2
//测试inout方法
func testMethod(a:inout Int) {
print(a);//1
a += 1;
//如果没有inout修饰的话,这句代码将会报错,主要意思是不能改变一个let修饰的常量
print(a);//2
}
3.使用
Int、Float、Bool、Character、struct、Array等值类型的对象都可以使用inout修饰,达到使用引用方式传递的目的。
网友评论