swift的值类型和引用类型
2022-11-02 本文已影响0人
三千烦恼风_eefa
Swift 值类型和引用类型
值类型,即每个实例保持一份数据。实例以及它们作为属性的任何值类型在代码中传递时总是被复制,它会创建一个全新的副本,改变副本的值不影响原始数据的值
引用类型,即所有实例共享一份数据。
引用类型在分配给变量或者常量,或者传递给函数时,其不会复制。而是对相同现有实例的引用。相当于只是创建一个共享的实例分身,两者公用一套数据。修改一处,另一处也会更改
-
值类型包括:所有基本类型:整型(Int),浮点型(float),布尔类型(Boolean),字符串类型(String),数组类型(Array),字典(Dictionary),元组(Tuple)都是值类型,它们底层都是以结构体(Struct)的形式实现的,所有结构体(struct)也是值类型,枚举(Enum)也是。
-
类(Class)属于引用类型;
Swift关键字
-
mutating:用于值类型中
修饰的是方法,告诉编译器这个方法会改变自身
-
inout:修改的是参数类型,inout能够让函数修改传递过来的参数;
mutating方法的第一个参数是self,并且以inout的方式传入,因为值类型在参数传递的时候会被复制,所以对于非mutating方法,self其实是值的副本,为了进行修改,self需要被声明为inout,而mutating的本质就是编译器帮我们完成的这个任务.