跳到主要内容

Swift中的结构体

提示
  1. 结构体的定义与用途:Swift 中的结构体用于存储多个数据类型的变量,特别适用于存储类似数据集,如人的名字和年龄。
  2. 实例化和属性访问:结构体通过默认初始化器创建实例,其属性可以通过点符号进行访问和修改。
  3. 成员逐一初始化器和方法:结构体支持成员逐一初始化器以在创建时分配值,且可以包含方法,提供额外的功能和行为。

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

假设我们想要存储一个人的名字和年龄。我们可以创建两个变量:name 和 age 并存储值。

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

在这种情况下,为每个个人创建变量可能是一个繁琐的任务。为了解决这个问题,我们可以创建一个存储名字和年龄的结构体。现在,这个结构体可以用于每个人。

定义 Swift 结构体

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

struct 结构体名称 {
// 结构体定义
}

这里,

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

让我们看一个例子,

struct Person {

var name = ""
var age = 0
}

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

注意:结构体内的变量和常量被称为属性。

结构体实例

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

struct Person {

var name = " "
var age = 0
}

// 创建结构体实例
var person1 = Person()

这里,我们通过写结构体 Person 的名称后跟默认初始化器 () 来创建了一个实例。

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

// 修改 name 属性
person1.name = "Swift"

// 访问 age 属性
person1.age

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

示例:访问 Swift 结构体属性

// 定义一个结构体
struct Person {

// 定义两个属性
var name = ""
var age = 0
}

// 创建 Person 的实例
var person1 = Person()

// 访问属性并赋予新值
person1.age = 21
person1.name = "Rick"

print("姓名: \(person1.name) 和年龄: \( person1.age) ")

输出

姓名: Rick 和年龄: 21

在上述示例中,我们定义了一个名为 Person 的结构体,它有两个属性:nameage

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

最后,我们使用 . 符号访问并修改了实例的属性。

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

// 定义一个结构体
struct Student {

// 定义一个属性
var studentID = 0
}

// Person 的实例
var student1 = Student()

// 访问属性并赋予新值
student1.studentID = 101

print("学生 ID: \(student1.studentID)")

// 另一个 Person 的实例
var student2 = Student()

// 访问属性并赋予新值
student2.studentID = 102

print("学生 ID: \(student2.studentID)")

输出

学生ID: 101
学生ID: 102

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

注意:我们可以根据需要创建尽可能多的结构体实例。

Swift 成员逐一初始化器

之前我们为结构体属性分配了默认值。

struct Person {

var name = ""
}

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

var person1 = Person()

然而,如果我们没有为结构体属性分配默认值。

struct Person {

var name: String
}

我们在创建实例时传递值。

var person1 = Person(name: "Kyle")

这里,括号 () 内的值自动分配给结构体的对应属性。这被称为成员逐一初始化器。

注意:即使我们为结构体属性分配了默认值,我们也可以使用成员逐一初始化器。

示例:成员逐一初始化器

struct Person {

// 没有默认值的属性
var name: String
var age: Int
}

// 使用成员逐一初始化器的 Person 实例
var person1 = Person(name: "Kyle", age: 19)

print("姓名: \(person1.name) 和 年龄: \(person1.age)")

输出

姓名: Kyle 和 年龄: 19

在上述示例中,我们为 Person 结构体创建了实例 person1

由于我们没有为属性分配默认值,我们使用成员逐一初始化器来分配值。

Swift 结构体中的函数

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

让我们看一个例子,

struct Car {

var gear = 0

// 结构体内的方法
func applyBrake(){
print("应用液压刹车")
}
}

// 创建一个实例
var car1 = Car()

car1.gear = 5

print("档位: \(car1.gear)")
// 访问方法
car1.applyBrake()

输出

应用液压刹车

在上述示例中,我们在 Car 结构体内定义了名为 applyBraking() 的方法。注意方法的访问方式,

car1.applyBrake()

这里,我们使用 . 符号来访问结构体内定义的方法。最后,方法内的语句被执行。