在 Swift 中,结构体用于存储不同数据类型的变量。例如,
假设我们要存储一个人的姓名和年龄。我们可以创建两个变量:name 和 age 并存储值。
然而,假设我们要存储多个人的相同信息。
在这种情况下,为个人创建变量可能是一项繁琐的任务。为了克服这一点,我们可以创建一个存储姓名和年龄的结构体。现在,这个结构体可以用于每个人。
定义 Swift 结构体
以下是 Swift 中定义结构体的语法
struct StructureName {
// structure definition
}
这里,
struct
- 用于定义结构体的关键字StructName
- 结构体的名称
让我们看一个例子,
struct Person {
var name = ""
var age = 0
}
这里,我们定义了一个名为 Person
的结构体。在花括号 {}
内部,结构体包含两个变量 name 和 age,其值分别为 ""
和 0。
注意:结构体内部的变量和常量称为属性。
结构体实例
结构体定义只是一个蓝图。要使用结构体,我们需要创建一个它的实例。例如,
struct Person {
var name = " "
var age = 0
}
// create instance of struct
var person1 = Person()
这里,我们通过编写结构体 Person
的名称,后跟默认初始化器 ()
来创建了一个实例。
现在,我们可以使用 person1
实例来访问和修改结构体属性。例如,
// modify the name property
person1.name = "Swift"
// access the age property
person1.age
这里,我们使用点表示法 .
来访问结构体属性。
示例:Swift 访问结构体属性
// define a structure
struct Person {
// define two properties
var name = ""
var age = 0
}
// create instance of Person
var person1 = Person()
// access properties and assign new values
person1.age = 21
person1.name = "Rick"
print("Name: \(person1.name) and Age: \( person1.age) ")
输出
Name: Rick and Age: 21
在上面的示例中,我们定义了名为 Person
的结构体,它有两个属性:name 和 age。
我们还创建了 Person
结构体的一个实例 person1
。
最后,我们使用 .
表示法访问和修改了实例的属性。
示例:创建结构体的多个实例
// define a structure
struct Student {
// define a property
var studentID = 0
}
// instance of Person
var student1 = Student()
// access properties and assign new values
student1.studentID = 101
print("Student ID: \(student1.studentID)")
// another instance of Person
var student2 = Student()
// access properties and assign new values
student2.studentID = 102
print("Student ID: \(student2.studentID)")
输出
Student ID: 101 Student ID: 102
在上面的示例中,我们为 Student
结构体创建了两个实例 student1
和 student2
。
注意: 我们可以根据需要创建任意数量的结构体实例。
Swift Memberwise Initializer (成员初始化器)
之前我们给结构体属性赋了一个默认值。
struct Person {
var name = ""
}
我们使用默认初始化器创建了一个实例。
var person1 = Person()
但是,如果我们没有给结构体属性赋默认值。
struct Person {
var name: String
}
我们在创建实例时传入值。
var person1 = Person(name: "Kyle")
这里,括号 ()
中的值会自动赋给结构体的相应属性。这称为成员初始化器。
注意:即使我们已经为结构体属性赋了默认值,我们也可以使用成员初始化器。
示例:成员初始化器
struct Person {
// properties with no default values
var name: String
var age: Int
}
// instance of Person with memberwise initializer
var person1 = Person(name: "Kyle", age: 19)
print("Name: \(person1.name) and Age: \( person1.age)")
输出
Name: Kyle and Age: 19
在上面的示例中,我们为 Person
结构体创建了实例 person1
。
由于我们没有为属性赋默认值,我们使用成员初始化器来赋值。
Swift 结构体内的函数
我们也可以在 Swift 结构体内定义一个函数。在结构体内定义的函数称为方法。
让我们看一个例子,
struct Car {
var gear = 0
// method inside struct
func applyBrake(){
print("Applying Hydraulic Brakes")
}
}
// create an instance
var car1 = Car()
car1.gear = 5
print("Gear Number: \(car1.gear)")
// access method
car1.applyBrake()
输出
Applying Hydraulic Brakes
在上面的示例中,我们在 Car
结构体内定义了一个名为 applyBraking()
的方法。注意方法的访问方式,
car1.applyBrake()
这里,我们使用 .
表示法来访问结构体内部定义的方法。最后,执行了方法内的语句。