English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Les structures Swift sont un constructeur universel et flexible utilisé pour construire le code.
Nous pouvons définir des attributs (constantes, variables) pour les structures et ajouter des méthodes pour étendre les fonctionnalités des structures.
Contrairement à C et Objective C :
Les structures n'ont pas besoin de contenir de fichiers de mise en œuvre et d'interfaces.
Les structures nous permettent de créer un seul fichier et le système génère automatiquement l'interface externe pour d'autres codes.
Les structures sont toujours transmises par copie dans le code, donc leur valeur est immutable.
Nous définissons la structure à l'aide de la clé struct :
struct nameStruct { Définition 1 Définition 2 …… Définition N }
Nous définissons une structure nommée MarkStruct, les attributs de la structure sont les notes des trois matières des étudiants, le type de données est Int :
struct MarkStruct{}} var mark1: Int var mark2: Int var mark3: Int }
我们可以通过结构体名来访问结构体成员。
结构体示例化使用 let 关键字:
import Cocoa struct studentMarks { var mark1 = 100 var mark2 = 78 var mark3 = 98 } let marks = studentMarks() print("Mark1 是 (marks.mark1) print("Mark2 是 (marks.mark2) print("Mark3 是 (marks.mark3)
以上程序执行输出结果为:
Mark1 是 100 Mark2 是 78 Mark3 是 98
示例中,我们通过结构体名 'studentMarks' 访问学生的成绩。结构体成员初始化为mark1, mark2, mark3,数据类型为整型。
然后我们通过使用 let 关键字将结构体 studentMarks() 示例化并传递给 marks。
最后我们就通过 . 号来访问结构体成员的值。
以下示例化通过结构体示例化时传值并克隆一个结构体:
import Cocoa struct MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } } var aStruct = MarksStruct(mark: 98) var bStruct = aStruct // bStruct 和 aStruct 是使用相同值的结构体! bStruct.mark = 97 print(aStruct.mark) // 98 print(bStruct.mark) // 97
以上程序执行输出结果为:
98 97
在你的代码中,你可以使用结构体来定义你的自定义数据类型。
结构体示例总是通过值传递来定义你的自定义数据类型。
按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:
结构体的主要目的是用来封装少量相关简单数据值。
有理由预计一个结构体示例在赋值或传递时,封装的数据将会被拷贝而不是被引用。
任何在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
结构体不需要去继承另一个已存在类型的属性或者行为。
举例来说,以下情境中适合使用结构体:
几何形状的大小,封装一个width
属性和height
属性,两者均为Double
类型。
一定范围内的路径,封装一个start
属性和length
属性,两者均为Int
类型。
三维坐标系内一点,封装x
,y
和z
属性,三者均为Double
类型。
结构体示例是通过值传递而不是通过引用传递。
import Cocoa 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 } } print("获得高分:") var marks = markStruct(mark1: 98, mark2: 96, mark3:100) print(marks.mark1) print(marks.mark2) print(marks.mark3) print("获得低分:") var fail = markStruct(mark1: 34, mark2: 42, mark3: 13) print(fail.mark1) print(fail.mark2) print(fail.mark3)
以上程序执行输出结果为:
获得高分: 98 96 100 获得低分: 34 42 13
以上示例中我们定义了结构体 markStruct,三个成员属性:mark1, mark2 和 mark3。结构体内使用成员属性使用self关键字。
从示例中我们可以很好地理解到结构体示例是通过值传递的。