Die Anleitung zu Swift Struct

View more categories:

1- Was ist Struct ?

In  Swift ist  Struct (structure) eine besondere Wert. Es erstellt eine Variable um viele einzelnen Werte zu speichern. Und diese Wert hat die Beziehungen zu einander 
Zum Beispiel: Die Information von einem Arbeitnehmer schließt ... ein:
  • Die Code des Arbeitnehmer
  • Der Name des Arbeitnehmer
  • Die Position
Sie können 3 Variable erstellen um die oben Information von Arbeitnehmer zu speichern.  Allerdings Sie können ein Struct erstellen um die 3 obengemeinten Informationen in einer einzigen Variable zu speichern
Swift benutzt das Schlüsselwort  struct um ein  Struct.zu melden
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;
  }

}
Das Beispiel über die Benutzung vom  Struct:
EmployeeTest.swift
import Foundation



func test_EmployeeStruct()     {
    
    // Eine Variable mit dem Typ vom struct Employee erstellen.
    let john = Employee(empNumber:"E01",empName: "John",position: "CLERK")
    
    print("Emp Number: " + john.empNumber)
    print("Emp Name: " + john.empName)
    print("Emp Position: " + john.position)
    
}
Die File  main.swift ändern
main.swift
import Foundation

test_EmployeeStruct()
Zum Beispiel

2- Der Vergleich zwischen Struct und  Class

Struct is oft benutzt um ein Objekt für die Wertsspeicherung zu erstellen, davon die Klasse werden mehr umfangreich benutzt.
  1. Struct darf aus einer class oder einem struct erben
  2. Aber Struct erlaubt, aus ein oder viele Protocol.zu erben
Wenn  struct als ein Parameter in einer Funktion (oder einer Ausdruck) erscheint, wird es als die Wert übertragen (pass). Inzwischen wenn das Objekt vom class wie einen Parameter in einer Funktion (oder einer Ausdruck) erscheint, wird es als eine Reference übertragen
StructVsClass.swift
import Foundation

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

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

// Eine Funktion, 2 Parameter
// Der erste Parameter ist die Klasse, der zweite Parameter ist ein struct.
func passToMe( myClass: MyClass, myStruct: MyStruct)   {
    
    // Die Wert von dem Feld 'name' ändern.
    myClass.name = "New Name"
    
    // Die Wert eines Feldes von struct nicht ändern.
    // (Es ist eine Kopie, ihre Felder wird die Konstante werden)
    // myStruct.name = "New Name" ***
}


func test_passToMe()   {
    
    // Ein Objekt von MyClass.
    var  mc = MyClass()
    
    print("mc.name = \(mc.name)") // Abc
    
    // Eine Wert von MyStruct.
    var ms = MyStruct()
    
    
    print("Call passToMe function")
    
    // Die Parameter in die Funktion passToMe() übertragen
    // Achtung: Der erste Parameter braucht keinen Label 
    passToMe( mc, myStruct: ms)
    
    
    print("mc.name = \(mc.name)") // New Name
    
}
Zum Beispiel

3- Constructor vom Struct

Struct kann die Constructor ( die Methode zur Erstellung des Objekt) haben, aber kein Destructor (die Methode zur Stornierung des Objekt) haben
Unten sind das einige Bemerkung über Constructor:
  1. Sie können einen oder viele  Constructor für struct.schreiben
  2. Im Constructor müssen Sie die Werte für alle Felder ohne Werte zuweisen.

4- Die Methode und das Attribute vom Struct

Struct kann viele ( method) und Eigenschaften ( property) haben
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;
     
   }
 
}
Sehen Sie über die Eigenschaften (Property) bei ...:
  • TODO: LINK??

5- Struct und Protocol

Struct kann aus einem oder vielem  Protocol erben.
  • TODO:

View more categories: