Swift - Structures

Swift 4 fournit un bloc de construction flexible pour utiliser des constructions en tant que structures. En utilisant ces structures, une fois peut définir des méthodes et des propriétés de construction.

Contrairement à C et Objective C

  • La structure n'a pas besoin de fichiers d'implémentation et d'interface.

  • La structure nous permet de créer un seul fichier et d'étendre automatiquement son interface à d'autres blocs.

Dans Structure, les valeurs des variables sont copiées et transmises dans les codes suivants en renvoyant une copie des anciennes valeurs afin que les valeurs ne puissent pas être modifiées.

Syntaxe

Structures are defined with a 'Struct' Keyword.
struct nameStruct {
   Definition 1
   Definition 2
   ---
   Definition N
}

Définition d'une structure

Prenons par exemple, supposons que nous devions accéder au dossier des élèves contenant les notes de trois matières et connaître le total de trois matières. Ici, markStruct est utilisé pour initialiser une structure avec trois marques comme type de données 'Int'.

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

Accéder à la structure et à ses propriétés

Les membres de la structure sont accessibles par son nom de structure. Les instances de la structure sont initialisées par le mot clé '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)")

Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -

Mark1 is 100
Mark2 is 200
Mark3 is 300

Les notes des étudiants sont accessibles par le nom de la structure «studentMarks». Les membres de la structure sont initialisés en tant que mark1, mark2, mark3 avec des valeurs de type entier. Ensuite, la structure studentMarks () est transmise aux 'marques' avec le mot clé 'let'. Ci-après, «marques» contiendra les valeurs des membres de la structure. Désormais, les valeurs sont imprimées en accédant aux valeurs des membres de la structure par '.' avec ses noms initialisés.

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

Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -

98
97

Meilleures pratiques d'utilisation des structures

Le langage Swift 4 fournit la fonctionnalité pour définir des structures en tant que types de données personnalisés pour la construction des blocs fonctionnels. Les instances de structure sont passées par sa valeur aux blocs définis pour des manipulations ultérieures.

Besoin d'avoir des structures

  • Pour encapsuler des valeurs de données simples.

  • Copier les données encapsulées et leurs propriétés associées par «valeurs» plutôt que par «références».

  • Structure à «Copier» et «Référence».

Les structures dans Swift 4 transmettent leurs membres avec leurs valeurs plutôt que par ses références.

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)

Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -

98
96
100

Un autre exemple

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)

Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -

34
42
13

La structure 'markStruct' est définie en premier avec ses membres mark1, mark2 et mark3. Désormais, les variables des classes membres sont initialisées pour contenir des valeurs entières. Ensuite, la copie des membres de la structure est créée avec le mot-clé «self». Une fois la copie des membres de la structure créée, le bloc de structure avec ses marques de paramètres est passé à la variable «marks» qui contiendra désormais les notes des étudiants. Ensuite, les marques sont imprimées sous la forme 98, 96, 100. L'étape suivante pour les mêmes membres de structure, une autre instance appelée «échec» est utilisée pour pointer les mêmes membres de structure avec des marques différentes. Ensuite, les résultats sont maintenant imprimés sous la forme 34, 42, 13. Cela explique clairement que les structures auront une copie des variables membres puis passeront les membres à leurs blocs fonctionnels à venir.