Swift教程之类与结构详解

2020-01-08 22:44:25丽君

也可以使用.语法连续地获取属性的属性,比如VideoMode中resolution属性的width属性

 

复制代码  
println("The width of someVideoMode is (someVideoMode.resolution.width)")
// prints "The width of someVideoMode is 0"

 

使用这种方法不仅可以访问,也可以赋值:

 

复制代码  
someVideoMode.resolution.width = 1280
println("The width of someVideoMode is now (someVideoMode.resolution.width)")
// prints "The width of someVideoMode is now 1280"
注意:和Objective-C不同,Swift能够直接设置一个结构属性的子属性,就像上面这个例子一样。

 

结构类型的成员初始化方法

每个结构都有一个成员初始化方法,可以在初始化的时候通过使用属性名称来指定每一个属性的初始值:

 

复制代码  
let vga = Resolution(width: 640, height: 480)

 

但是和结构不同,类实例不能够使用成员初始化方法,在初始化一章有专门的介绍。

2、结构和枚举类型是数值类型

数值类型是说当它被赋值给一个常量或者变量,或者作为参数传递给函数时,是完整地复制了一个新的数值,而不是仅仅改变了引用对象。

事实上读到这里你已经在前面几章见过数值类型了,所有Swift中的基础类型-整型,浮点型,布尔类型,字符串,数组和字典都是数值类型。它们也都是由结构来实现的。

在Swift中所有的结构和枚举类型都是数值类型。这意味这你实例化的每个结构和枚举,其包含的所有属性,都会在代码中传递的时候被完整复制。

下面的这个例子可以说明这个特性:

 

复制代码  
let hd = Resolution(width: 1920, height: 1080)
var cinema = hd

 

声明了一个常量hd,是Resolution的实例化,宽度是1920,高度是1080,然后声明了一个变量cinema,和hd相同。这个时候表明,cinema和hd是两个实例,虽然他们的宽度都是1920,高度都是1080。