本教程属于Swift系列
结构是Swift的一个基本概念。
结构在Swift中无处不在。甚至内置类型也是结构。
我们可以创建结构的实例,我们称之为对象。
在大多数语言中,对象只能从类中创建。Swift也有类,但你也可以从结构中创建对象,官方文档建议更倾向于结构,因为它们更容易使用。
它们是类的轻型版本。
结构可以有属性,结构可以有方法(函数),结构可以定义下标,结构可以定义初始化器,结构可以符合协议,结构可以被扩展。
类允许的一个重要功能是继承,所以如果您需要继承,您可以使用类。
结构是用这种语法定义的。
struct Dog {
}
在一个结构中,你可以定义存储的属性。
struct Dog {
var age = 8
var name = "Roger"
}
这个结构定义定义了一个类型。要用这种类型创建一个新的实例,我们使用这种语法。
let roger = Dog()
一旦你有了一个实例,你就可以使用点语法访问它的属性。
let roger = Dog()
roger.age
roger.name
同样的点状语法也用于更新属性值。
roger.age = 9
您也可以通过属性值创建一个结构实例。
let syd = Dog(age: 7, name: "Syd")
syd.age
syd.name
为此,属性必须被定义为变量,使用var ,而不是作为常量(使用let )。尊重这些属性的定义顺序也很重要。
结构可以有实例方法:属于一个结构的实例的函数。
struct Dog {
var age = 8
var name = "Roger"
func bark() {
print("\(name): wof!")
}
}
我们也有类型方法。
struct Dog {
var age = 8
var name = "Roger"
func bark() {
print("\(name): wof!")
}
static func hello() {
print("Hello I am the Dog struct")
}
}
被调用为Dog.hello()
结构是一种值类型。这意味着当它们被传递给一个函数,或者从一个函数返回时,它们会被复制。而当我们把一个指向结构的变量分配给另一个变量时。
这也意味着,如果我们想更新一个结构的属性,我们必须使用var ,而不是let 来定义它。
Swift中的所有类型都被定义为结构。Int、Double、String、数组和字典等等,都是结构。