结构( Structures)
Swift 4提供了一个灵活的构建块,它使用构造作为结构。 通过利用这些结构,可以定义构造方法和属性。
与C和Objective C不同
结构不需要实现文件和接口。
Structure允许我们创建单个文件并将其界面自动扩展到其他块。
在Structure中,通过返回旧值的副本来复制变量值并在后续代码中传递,以便不能更改这些值。
语法 (Syntax)
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)")
当我们使用游乐场运行上述程序时,我们得到以下结果 -
Mark1 is 100
Mark2 is 200
Mark3 is 300
学生标记的结构名称为“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 and bStruct are two structs with the same value!
bStruct.mark = 97
print(aStruct.mark) // 98
print(bStruct.mark) // 97
当我们使用游乐场运行上述程序时,我们得到以下结果 -
98
97
结构的最佳使用实践
Swift 4语言提供了将结构定义为用于构建功能块的自定义数据类型的功能。 结构的实例通过其值传递给定义的块以进行进一步操作。
需要有结构
封装简单数据值。
通过“值”而不是“引用”复制封装数据及其关联属性。
“复制”和“参考”的结构。
Swift 4中的结构传递其成员的值而不是其引用。
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)
当我们使用游乐场运行上述程序时,我们得到以下结果 -
98
96
100
另一个例子
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)
当我们使用游乐场运行上述程序时,我们得到以下结果 -
34
42
13
首先定义结构'markStruct',其成员为mark1,mark2和mark3。 现在,成员类的变量被初始化为保存整数值。 然后使用“self”关键字创建结构成员的副本。 一旦创建了结构成员的副本,结构块及其参数标记就会传递给'marks'变量,该变量现在将保存学生标记。 然后将标记打印为98,96,100。对于相同结构成员的下一步骤,使用另一个名为“fail”的实例来指向具有不同标记的相同结构成员。 然后结果打印为34,42,13。这清楚地解释了结构将具有成员变量的副本,然后将成员传递给它们即将到来的功能块。