Structure rapide


Les structures Swift sont une construction polyvalente et flexible pour le code du bâtiment.

Nous pouvons définir des propriétés (constantes, variables) et ajouter des méthodes à la structure pour étendre les fonctionnalités de la structure.

La différence entre C et Objective C est :

  • La structure n'a pas besoin de contenir de fichiers d'implémentation ni d'interfaces. La structure

  • nous permet de créer un seul fichier et le système générera automatiquement des interfaces externes vers un autre code.

La structure est toujours passée dans le code en étant copiée, sa valeur ne peut donc pas être modifiée.

Syntaxe

On définit la structure à travers le mot clé struct :

struct nameStruct { 
   Definition 1
   Definition 2
   ……
   Definition N
}

Instance

On définit une structure nommée MarkStruct, Les attributs du structure sont les scores des étudiants dans trois matières, et le type de données est Int :

struct MarkStruct{
   var mark1: Int
   var mark2: Int
   var mark3: Int
}

Nous pouvons accéder aux membres de la structure via le nom de la structure.

La structure est instanciée à l'aide du mot-clé 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)")

Le résultat de sortie de l'exécution du programme ci-dessus est :

Mark1 是 100
Mark2 是 78
Mark3 是 98

Dans l'exemple , nous transmettons le nom de structure « studentMarks » pour accéder aux notes des étudiants. Les membres de la structure sont initialisés sous la forme mark1, mark2, mark3 et le type de données est entier.

Ensuite, nous instancions la structure studentMarks() et la transmettons aux marques en utilisant le mot-clé let.

Enfin, on accède aux valeurs des membres de la structure grâce aux numéros ..

L'instanciation suivante transmet une valeur lors de l'instanciation d'une structure et clone une structure :

import Cocoa

struct MarksStruct {
   var mark: Int

   init(mark: Int) {
      self.mark = mark
   }
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的结构体!
bStruct.mark = 97
print(aStruct.mark) // 98
print(bStruct.mark) // 97

Le résultat de sortie de l'exécution du programme ci-dessus est :

98
97

Application de structure

Dans votre code, vous pouvez utiliser des structures pour définir vos types de données personnalisés.

Les instances de structure sont toujours transmises par valeur pour définir votre type de données personnalisé.

En règle générale, veuillez envisager de construire une structure lorsqu'une ou plusieurs des conditions suivantes sont remplies :

  • Le but principal d'une structure est d'encapsuler un petit nombre de valeurs de données simples associées.

  • Il y a des raisons de s'attendre à ce que lorsqu'une instance de structure est attribuée ou transmise, les données encapsulées soient copiées plutôt que référencées.

  • Tous les attributs de type valeur stockés dans la structure seront également copiés au lieu d'être référencés.

  • Une structure n'a pas besoin d'hériter des propriétés ou du comportement d'un autre type existant.

Par exemple, les structures peuvent être utilisées dans les situations suivantes :

  • La taille d'une forme géométrique, encapsulant un attribut width et heightAttributs, tous deux de type Double.

  • Un chemin dans une certaine plage encapsule un attribut start et un attribut length, tous deux de type Int.

  • est un point dans le système de coordonnées tridimensionnelles, encapsulant les attributs x, y et z, tous les trois sont de type Double.

Les instances de structure sont transmises par valeur plutôt que par référence.

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)

Le résultat de sortie de l'exécution du programme ci-dessus est :

优异成绩:
98
96
100
糟糕成绩:
34
42
13

Dans l'exemple ci-dessus, nous avons défini la structure markStruct, avec trois attributs de membre : mark1, mark2 et mark3. Lorsque vous utilisez des propriétés de membre dans une structure, utilisez le mot-clé self.

A partir de l'exemple, on peut bien comprendre que l'instance de structure est passée par valeur.