上一章Swift教程请查看:swift闭包和闭包函数
Swift提供了一个灵活的构建块来使用构念作为结构,利用这些结构可以定义结构、方法和属性。
不像C和Objective C:
- 结构不需要实现文件和接口。
- 结构允许我们创建单个文件,并自动将其接口扩展到其他块。
在结构中,通过返回旧值的副本来复制变量值并在随后的代码中传递这些变量值,这样就不能更改这些值。
语法
Structures are defined with a 'Struct' Keyword.
struct nameStruct {
Definition 1
Definition 2
---
Definition N
}
结构体的定义
例如,假设我们必须访问包含三个科目分数的学生记录,并找出总共三个科目的分数。在这里,markStruct用于初始化一个结构,该结构有三个标记作为数据类型“Int”。
struct MarkStruct {
var mark1: Int
var mark2: Int
var mark3: Int
}
访问结构体及其属性
通过结构体名访问结构的成员,结构体的实例由’let’关键字初始化。
struct studentMarks {
var mark1 = 100
var mark2 = 200
var mark3 = 300
}
let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")
学生标记由结构名称“studentMarks”访问。结构成员初始化为带有整数类型值的mark1、mark2、mark3。然后将结构studentMarks()传递给带有“let”关键字的“marks”。以下“标记”将包含结构成员值。现在通过’访问结构成员值来打印值。初始化的名称。
struct MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct和bStruct是两个具有相同值的结构体!!
bStruct.mark = 97
print(aStruct.mark) // 98
print(bStruct.mark) // 97
结构体的最佳使用方法
Swift语言提供了将结构定义为自定义数据类型以构建函数块的功能,结构的实例通过其值传递给定义的块,以便进行进一步的操作。
对结构的要求:
- 封装简单的数据值。
- 以“值”而不是“引用”来复制封装的数据及其相关属性。
- “复制”和“引用”结构体。
Swift中的结构通过其成员传递其值,而不是通过其引用。
struct markStruct {
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int) {
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)
另一个例子:
struct markStruct {
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int) {
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
print(fail.mark1)
print(fail.mark2)
print(fail.mark3)
结构“markStruct”首先由其成员mark1、mark2和mark3定义。现在,成员类的变量被初始化为保存整数值,然后使用“self”关键字创建结构成员的副本,一旦结构成员的副本被创建,带有参数标记的结构块被传递给‘marks’变量,该变量将保存学生的标记,然后把分数印成98,96,100。对于相同的结构成员,下一步是使用另一个名为“fail”的实例来指向具有不同标记的相同结构成员,然后结果打印成34 42 13。这清楚地说明了结构将拥有成员变量的副本,然后将成员传递给它们即将到来的函数块。