Le Tutoriel de Swift Struct

View more categories:

1- Qu'est-ce que Struct?

Dans Swift, Struct (Structure) est le code particulier et il est utilisé pour construire une variable qui instaure multiples valeurs mais ces valeurs sont liées les uns les autres.
Par exemple, l'information d'un employé(e) comprend:
  • Le numéro d'employé(e)
  • Le nom de l'employé(e)
  • Le poste
Vous pouvez créer 3 variables pour conserver ces 3 informations précitées. Mais vous pouvez créer un Struct pour les enregistrer dans un variable unique.
Swift utilise le mot- clé  struct pour déclarer un  Struct.
Employee.swift
import Foundation



struct Employee {

   var empNumber:String
   var empName:String
   var position:String

   // Constructor.
   init(empNumber:String, empName:String, position:String) {
      self.empNumber = empNumber;
      self.empName = empName;
      self.position = position;
  }

}
Par exemple, utilisez  Struct:
EmployeeTest.swift
import Foundation



func test_EmployeeStruct()     {
    
    // Créez une variable du type struct Employee.
    let john = Employee(empNumber:"E01",empName: "John",position: "CLERK")
    
    print("Emp Number: " + john.empNumber)
    print("Emp Name: " + john.empName)
    print("Emp Position: " + john.position)
    
}
Editez  main.swift:
main.swift
import Foundation

test_EmployeeStruct()
Exécutez l'exemple:

2- Struct avec Class

Struct est généralement usé pour créer une constante qui stocke des valeurs, alors que le class est diversement utilisé.
  1. Struct ne permet pas de l'héritage d'une class ou un autre struct.
  2. Mais Struct permet de l'héritage d'une ou plusieurs Protocol.
Si  struct apparaît étant comme un paramètre dans une fonction ( ou une méthode), il est transmis (pass) comme une valeur. Alors que, si l'instante de  class apparaît comme étant une fonction (ou une méthode), il est transmis (pass) étant comme une référence (reference).
StructVsClass.swift
import Foundation

// Une classe
class MyClass  {
    
    var name: String = "Abc"
    
}

// Une struct
struct MyStruct {
    
    var name: String = "Abc"
    
}

// Une fonction, 2 paramètres.
// Le premier paramètre est une classe, le deuxième est une struct.
func passToMe( myClass: MyClass, myStruct: MyStruct)   {
    
    // Changez la valeur du champs 'name'.
    myClass.name = "New Name"
    
    // Impossible de changer la valeur en champ de cette structure.
    // (C'est une copie, ses champs deviennent des constantes et ne peuvent pas être changés).
    // myStruct.name = "New Name" ***
}


func test_passToMe()   {
    
    // Un objet de MyClass.
    var  mc = MyClass()
    
    print("mc.name = \(mc.name)") // Abc
    
    // Une valeur de MyStruct.
    var ms = MyStruct()
    
    
    print("Call passToMe function")
    
    // Mettez des paramètres à la fonction passToMe()
    // Remarque: le premier paramètre ne nécessite pas d'étiquette. (Label).
    passToMe( mc, myStruct: ms)
    
    
    print("mc.name = \(mc.name)") // New Name
    
}
Exécutez l'exemple:

3- Constructeur de Struct

Struct peut avoir des  Constructor (le Constructeur- création d'un objet), mais il n'a pas de  Destructor (le Destructeur- la destruction d'un objet).
Quelque remarques à tenir concernant  Constructor:
  1. Vous pouvez écrire un ou plusieurs Constructor pour struct.
  2. Dans Constructor, vous devez assigner une valeurs aux tout les champs qui n'ont pas de la valeur.

4- Les méthodes et les propriétés de Struct

Struct peut avoir des méthodes ( method) et des propriétés ( property):
Book.swift
import Foundation


struct Book  {
 
   // Property
   var title:String    {
      get    {
        return self.title;
      }
      set (value)   {
        self.title = value
      }
   }
 
   // Property
   var author:String    {
     
       get {
        return self.author;
       }
       set(value)  {
           self.author = value;
       }
     
   }
 
   // Constructor.
   init(  title:String, author:String)  {
     
      self.title = title;
     
      self.author = author;
     
   }
 
   // Method.
   func getInfo() -> String     {
     
       return "Book Title: " + self.title + ", Author: " + self.author;
     
   }
 
}
En savoir plus des propriétés (Property) à:
  • TODO: LINK??

5- Struct et Protocol

Struct peut hésiter d'une ou plusieurs  Protocol.
  • TODO:

View more categories: