Swift 结构体

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

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

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

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


定义 Swift 结构体

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

struct StructureName {
  // structure definition 
}

这里,

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

让我们看一个例子,

struct Person {

  var name = ""
  var age = 0
}

这里,我们定义了一个名为 Person 的结构体。在花括号 {} 内部,结构体包含两个变量 nameage,其值分别为 ""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 的结构体,它有两个属性:nameage

我们还创建了 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 结构体创建了两个实例 student1student2

注意: 我们可以根据需要创建任意数量的结构体实例。


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()

这里,我们使用 . 表示法来访问结构体内部定义的方法。最后,执行了方法内的语句。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战