English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Swift fortgeschritten
Swift-Strukturen
Swift-Strukturen sind ein allgemeines und flexibles Konstruktionsmittel zur Erstellung von Code.
Im Gegensatz zu C und Objective C können wir für Strukturen Attribute (Konstanten, Variablen) definieren und Methoden hinzufügen, um die Funktionen der Strukturen zu erweitern.
Strukturen benötigen keine Implementierungsdatei und Schnittstellen.
Strukturen werden im Code immer durch Kopieren übertragen, daher sind ihre Werte nicht änderbar.
Wir definieren Strukturen durch den Schlüsselwort struct:
struct nameStruct { Definition 1 Definition 2 …… Definition N }
Wir definieren eine Struktur mit dem Namen MarkStruct, deren Attribute die Noten der drei Fächer des Schülers sind und deren Datentyp Int ist:
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)
The above program execution output result is:
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
The above program execution output result is:
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("Get High Score:") var marks = markStruct(mark1: 98, mark2: 96, mark3:100) print(marks.mark1) print(marks.mark2) print(marks.mark3) print("Get Low Score:") var fail = markStruct(mark1: 34, mark2: 42, mark3: 13) print(fail.mark1) print(fail.mark2) print(fail.mark3)
The above program execution output result is:
Get High Score: 98 96 100 Get Low Score: 34 42 13
In the above example, we defined the structure markStruct, three member properties: mark1, mark2 and mark3The structure body uses member properties with the self keyword.
From the examples, we can understand very well that the structure of the example is passed by value.