Swift 结构

在本教程中,您将了解 Swift 结构,还将学习借助实例创建结构实例。

在 Swift 中,结构用于存储不同数据类型的变量。例如,

假设我们想存储一个人的姓名和年龄。我们可以创建两个变量:姓名、年龄和存储值。

然而,假设我们想存储多个人的相同信息。

在这种情况下,为个人创建变量可能是一项乏味的任务。为了克服这个问题,我们可以创建一个存储名称和年龄的结构。现在,这个结构可以用于每个人。


定义 Swift 结构

以下是在 Swift 中定义结构的语法:

  1. struct StructureName {
  2. // structure definition
  3. }

这里,

  • struct - 用于定义结构的关键字
  • StructName — 结构的名称

让我们看一个例子,

  1. struct Person {
  2. var name = ""
  3. var age = 0
  4. }

这里,我们定义了一个名为 Person 的结构。在花括号 {} 内,结构包含两个变量 nameage,分别为 ""0

注意:结构中的变量和常量称为属性。

结构实例

结构定义只是一个蓝图。要使用结构,我们需要创建它的实例。例如,

  1. struct Person {
  2. var name = " "
  3. var age = 0
  4. }
  5. // create instance of struct
  6. var person1 = Person()

在这里,我们创建了一个实例,方法是将结构 Person 的名称后跟一个默认的初始化 ()

现在,我们可以使用 person1 实例访问和修改结构属性。例如,

  1. // modify the name property
  2. person1.name = "Swift"
  3. // access the age property
  4. person1.age

这里,我们使用了点符号 . 来访问 struct 属性。


实例:Swift 访问结构属性

  1. // define a structure
  2. struct Person {
  3. // define two properties
  4. var name = ""
  5. var age = 0
  6. }
  7. // create instance of Person
  8. var person1 = Person()
  9. // access properties and assign new values
  10. person1.age = 21
  11. person1.name = "Rick"
  12. print("Name: \(person1.name) and Age: \( person1.age) ")

结果如下:

  1. Name: Rick and Age: 21

在上面的例子中,我们用两个属性定义了名为 Person 的结构:nameage

我们还创建了结构 Person 的实例 person1

最后,我们使用 .notation 访问和修改了实例的属性。


实例:创建结构的多个实例

  1. // define a structure
  2. struct Student {
  3. // define a property
  4. var studentID = 0
  5. }
  6. // instance of Person
  7. var student1 = Student()
  8. // access properties and assign new values
  9. student1.studentID = 101
  10. print("Student ID: \(student1.studentID)")
  11. // another instance of Person
  12. var student2 = Student()
  13. // access properties and assign new values
  14. student2.studentID = 102
  15. print("Student ID: \(student2.studentID)")

结果如下:

  1. Student ID: 101
  2. Student ID: 102

在上面的实例中,我们创建了 Student 结构的两个实例 student1student2

注意:我们可以创建任意数量的结构实例。

Swift 成员初始化

前面我们给结构属性指定了一个默认值。

  1. struct Person {
  2. var name = ""
  3. }

我们已经使用默认初始化创建了一个实例。

  1. var person1 = Person()

然而,如果我们不为 struct 属性指定默认值。

  1. struct Person {
  2. var name: String
  3. }

我们在创建实例时传递值

  1. var person1 = Person(name: "Kyle")

在这里,括号 () 内的值自动分配给结构的相应属性。这称为成员初始化。

注意:即使我们已经为结构属性赋予了默认值,我们也可以使用成员初始化

实例:成员初始化

  1. struct Person {
  2. // properties with no default values
  3. var name: String
  4. var age: Int
  5. }
  6. // instance of Person with memberwise initializer
  7. var person1 = Person(name: "Kyle", age: 19)
  8. print("Name: \(person1.name) and Age: \( person1.age)")

结果为:

  1. Name: Kyle and Age: 19

在上面的实例中,我们为 Person 结构创建了实例 person1

因为我们没有给属性赋予默认值,所以我们使用成员初始化来赋值。


Swift 结构内部的功能

我们还可以在 swift 结构中定义函数。在结构中定义的函数称为方法。

让我们看一个例子,

  1. struct Car {
  2. var gear = 0
  3. // method inside struct
  4. func applyBrake(){
  5. print("Applying Hydraulic Brakes")
  6. }
  7. }
  8. // create an instance
  9. var car1 = Car()
  10. car1.gear = 5
  11. print("Gear Number: \(car1.gear)")
  12. // access method
  13. car1.applyBrake()

结果如下:

  1. Applying Hydraulic Brakes

在上面的实例中,我们在 Car 结构中定义了名为 applyBraking() 的方法。注意方法的访问,

  1. car1.applyBrake()

这里,我们使用了 .notation 来访问在结构中定义的方法。最后,执行方法中的语句。