- 快速教程
- 斯威夫特 - 主页
- 斯威夫特 - 概述
- Swift - 环境
- Swift - 基本语法
- Swift - 数据类型
- Swift - 变量
- Swift - 可选
- Swift - 元组
- Swift - 常量
- Swift - 文字
- Swift - 运算符
- Swift - 决策
- Swift - 循环
- Swift - 字符串
- 斯威夫特 - 角色
- Swift - 数组
- Swift - 套装
- 斯威夫特 - 字典
- Swift - 函数
- Swift - 闭包
- Swift - 枚举
- Swift - 结构
- Swift - 类
- Swift - 属性
- Swift - 方法
- Swift - 下标
- Swift - 继承
- Swift - 初始化
- Swift - 去初始化
- Swift - ARC 概述
- Swift - 可选链接
- Swift - 类型转换
- Swift - 扩展
- Swift - 协议
- Swift - 泛型
- Swift - 访问控制
- 斯威夫特有用的资源
- Swift - 在线编译
- Swift - 快速指南
- Swift - 有用的资源
- 斯威夫特 - 讨论
Swift - 结构
Swift 4 提供了一个灵活的构建块,可以将构造用作结构。通过使用这些结构一次可以定义构造方法和属性。
与 C 和 Objective C 不同
结构不需要实现文件和接口。
结构允许我们创建单个文件并将其接口自动扩展到其他块。
在 Structure 中,通过返回旧值的副本来复制变量值并在后续代码中传递,以便这些值无法更改。
句法
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)")
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
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
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
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)
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
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)
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
34 42 13
首先定义结构“markStruct”及其成员mark1、mark2 和mark3。现在成员类的变量被初始化为保存整数值。然后使用“self”关键字创建结构成员的副本。创建结构成员的副本后,结构块及其参数标记将传递到“marks”变量,该变量现在将保存学生标记。然后将标记打印为 98、96、100。下一步,对于相同的结构成员,使用另一个名为“fail”的实例来用不同的标记来指向相同的结构成员。然后结果现在打印为 34, 42, 13。这清楚地解释了结构将拥有成员变量的副本,然后将成员传递到即将到来的功能块。