Swift文档Chapter 9 类和结构体
结构体和类是一种通用而灵活的结构。
结构体和类的对比
结构体和类的共同点:
- 定义属性用于储存值;
- 定义方法用于提供功能;
- 定义下标操作用于通过下标语法访问它们的值;
- 定义构造器用于设置初始值;
- 通过扩展增加默认实现以外的功能;
- 遵循协议以提供某种标准功能。
类还有额外的功能:
- 继承允许一个类继承另一个类的特征;
- 类型转换允许在运行时检查和解释一个类实例的类型;
- 析构器允许一个类实例释放任何其所分配的资源;
- 引用计数允许对一个类的多次引用。
定义语法
结构体使用struct
关键字定义,类使用class
关键字定义。
struct StructName {
statements
}
class ClassName{
statements
}
类和结构体使用
UpperCamelCase
的方式来命名,属性和方法采用lowerCamelCase
的方式进行命名。
结构体和类的实例
声明一个新的类只需要ClassName()
就可以了,这种方式下所有的成员都会赋默认初始值。
属性访问
属性的访问使用.
即可访问。也可以为可变属性赋值。
结构体类型成员逐一构造器
结构体会自动生成一个成员逐一构造器。可以通过属性名称传递各个属性初始值。在括号中直接通过类似于函数输入参数的方式。
类没有默认的成员逐一构造器。
结构体和枚举是值类型
值类型是这样一种类型,当它被赋值给一个变量、常量或者被传递给一个函数的时候,其值会被拷贝。
Swift中所有的结构体和枚举类型都是值类型。这意味着它们的实例,以及实例中所包含的任何值类型的属性,在代码中传递的时候都会被复制。
类是引用类型
与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,使用的是已存在实例的引用,而不是其拷贝。
即使把一个类声明成常量,属性依然是可以改变的,这是因为常量中存储的是类的引用。
恒等运算符
===
:两个常量或者变量是否引用了同一个实例;!==
:两个常量或者变量是否没有引用同一个实例。