📅  最后修改于: 2023-12-03 15:05:26.071000             🧑  作者: Mango
Swift Struct是Swift编程语言中的一个特殊的数据类型。相比于类(Class),结构体(Struct)在Swift中被设计为更加轻量级的数据类型。因为Swift Struct是值类型(Value Type),而不是引用类型(Reference Type),这使得它更适合传递和管理简单的数据对象。
要创建一个Swift Struct,你需要使用struct关键字定义结构体的名称和属性。下面是一个简单的Swift Struct例子:
struct Person {
var name: String
var age: Int
var email: String?
}
这个例子定义了一个表示人的数据类型,其中包括一个名字、一个年龄和一个可选的电子邮件地址。要创建一个Person对象,只需创建一个新的Person结构,并设置相应的属性:
var john = Person(name: "John", age: 30, email: "john@example.com")
这会创建一个新的Person实例,其中包含三个属性:name,age和email。我们可以使用点语法访问这些属性:
print(john.name) // 输出 "John"
Swift Struct的属性类型可以包括Swift基本数据类型、Swift Struct、Swift Enum等。下面是一个Swift Struct例子,其中包含一个引用了另一个Swift Struct实例的属性:
struct Address {
var street: String
var city: String
var zipCode: String
}
struct Person {
var name: String
var age: Int
var email: String?
var address: Address
}
在这个例子中,Person结构包含一个引用了另一个Swift Struct实例的属性。对于这种类型的属性,你可以使用点语法来访问嵌套结构内部的属性:
let john = Person(name: "John", age: 30, email: "john@example.com", address: Address(street: "123 Main St", city: "San Francisco", zipCode: "94105"))
print(john.address.city) // 输出 "San Francisco"
类(Class)不同于Swift Struct的一个重要区别就在于,类(Class)可以包含方法(Method),但Swift Struct不能包含类方法。Swift Struct只能包含实例方法(Instance Method),这些方法可以访问和修改Swift Struct实例中的属性。下面是一个计算Person结构的年龄的例子,其中包括一个名为calculateAge的实例方法:
struct Person {
var name: String
var birthYear: Int
func calculateAge(currentYear: Int) -> Int {
return currentYear - self.birthYear
}
}
要调用实例方法,只需使用结构的变量名并调用方法名称,以及提供必要的参数:
let john = Person(name: "John", birthYear: 1990)
let currentYear = 2021
let age = john.calculateAge(currentYear: currentYear)
print("\(john.name) is \(age) years old.")
这将输出 “John is 31 years old.”。
Swift Struct中的方法也可能需要修改Swift结构的实例。在这种情况下,我们需要使用mutating关键字来改变结构体的属性。下面是一个将人的年龄增加一岁的例子,其中包括一个名为updateAge的mutating方法:
struct Person {
var name: String
var age: Int
mutating func updateAge() {
self.age += 1
}
}
要调用这个方法,只需使用结构的变量名并调用方法名称:
var john = Person(name: "John", age: 30)
john.updateAge()
print(john.age) // 输出 "31"
在这个例子中,我们使用了变量关键字var来声明Person实例john。由于updateAge方法需要修改john实例的属性,因此我们需要使用可变实例来调用这个方法。
Swift Struct是Swift编程语言中的一个特殊的数据类型。相比于类(Class),Swift Struct更轻量级,因为它是值类型(Value Type),而不是引用类型(Reference Type)。Swift Struct数据类型可以引用其他Swift Struct实例或其他类型的变量。Swift Struct还允许在数据类型中定义实例方法及mutating方法,以便修改Swift Struct实例的属性。