English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las estructuras de Swift son una construcción general y flexible que se utiliza para construir código.
Podemos definir propiedades (constantes, variables) y agregar métodos a las estructuras para expandir sus funcionalidades.
A diferencia de C y Objective C:
Las estructuras no necesitan contener archivos de implementación ni interfaces.
Las estructuras nos permiten crear un único archivo y el sistema generará automáticamente una interfaz externa para otro código.
Las estructuras se transmiten siempre de manera copiada en el código, por lo que su valor no es modificable.
Definimos una estructura mediante la palabra clave struct:
struct nombreStruct { Definición 1 Definición 2 …… Definición N }
Definimos una estructura llamada MarkStruct, cuyos atributos son las puntuaciones de tres asignaturas del estudiante, del tipo 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)
El resultado de la ejecución del programa anterior es:
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
El resultado de la ejecución del programa anterior es:
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("Obtener la puntuación alta:") var marks = markStruct(mark1: 98, mark2: 96, mark3:100) print(marks.mark1) print(marks.mark2) print(marks.mark3) print("Obtener la puntuación baja:") var fail = markStruct(mark1: 34, mark2: 42, mark3: 13) print(fail.mark1) print(fail.mark2) print(fail.mark3)
El resultado de la ejecución del programa anterior es:
Obtener la puntuación alta: 98 96 100 Obtener la puntuación baja: 34 42 13
En el ejemplo anterior, definimos la estructura markStruct, tres propiedades miembro: mark1, mark2 y mark3En el interior de la estructura, se utilizan las propiedades de los miembros con la palabra clave self.
Podemos entender muy bien a partir de los ejemplos que los ejemplos de estructuras se pasan por valor.