Le Tutoriel de Swift Struct

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()     {
    
    // Create a variable from Employee struct
    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

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

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

// A function, 2 parameters
// First parameter is a class, and second parameter is a struct.
func passToMe( myClass: MyClass, myStruct: MyStruct)   {
    
    // Change value to 'name' field.
    myClass.name = "New Name"
    
    // Can not change value to field of this struct.
    // (It is a copy,its fields become constants and can not be changed.
    // myStruct.name = "New Name" ***
}


func test_passToMe()   {
    
    // An object of MyClass.
    var  mc = MyClass()
    
    print("mc.name = \(mc.name)") // Abc
    
    // A value of MyStruct.
    var ms = MyStruct()
    
    
    print("Call passToMe function")
    
    // Pass to passToMe() function.
    // Note: The first parameter does not require a 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: