Swift - Strutture

Swift 4 fornisce una base flessibile per l'utilizzo di costrutti come strutture. Facendo uso di queste strutture una volta può definire costrutti metodi e proprietà.

A differenza di C e Objective C

  • La struttura non necessita di file di implementazione e interfaccia.

  • La struttura ci permette di creare un unico file e di estendere automaticamente la sua interfaccia ad altri blocchi.

In Struttura i valori delle variabili vengono copiati e passati nei codici successivi restituendo una copia dei vecchi valori in modo che i valori non possano essere modificati.

Sintassi

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

Definizione di una struttura

Considera ad esempio, supponiamo di dover accedere al record degli studenti contenente i voti di tre materie e di scoprire il totale di tre materie. Qui markStruct viene utilizzato per inizializzare una struttura con tre segni come tipo di dati "Int".

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

Accesso alla struttura e alle sue proprietà

Ai membri della struttura si accede tramite il nome della struttura. Le istanze della struttura vengono inizializzate dalla parola chiave "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)")

Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:

Mark1 is 100
Mark2 is 200
Mark3 is 300

Si accede ai voti degli studenti con il nome della struttura "studentMarks". I membri della struttura vengono inizializzati come mark1, mark2, mark3 con valori di tipo intero. Quindi la struttura studentMarks () viene passata ai "segni" con la parola chiave "let". Di seguito i "segni" conterranno i valori dei membri della struttura. Ora i valori vengono stampati accedendo ai valori dei membri della struttura con "." con i suoi nomi inizializzati.

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

Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:

98
97

Migliori pratiche di utilizzo delle strutture

Il linguaggio Swift 4 fornisce la funzionalità per definire strutture come tipi di dati personalizzati per la creazione dei blocchi funzione. Le istanze di struttura vengono passate per il suo valore ai blocchi definiti per ulteriori manipolazioni.

Necessità di avere strutture

  • Per incapsulare valori di dati semplici.

  • Per copiare i dati incapsulati e le proprietà associate per "valori" anziché per "riferimenti".

  • Struttura in "Copia" e "Riferimento".

Le strutture in Swift 4 trasmettono i propri membri con i propri valori anziché in base ai propri riferimenti.

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)

Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:

98
96
100

Un altro esempio

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)

Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:

34
42
13

La struttura 'markStruct' viene definita prima con i suoi membri mark1, mark2 e mark3. Ora le variabili delle classi membri vengono inizializzate per contenere valori interi. Quindi la copia dei membri della struttura viene creata con la parola chiave "self". Una volta creata la copia dei membri della struttura, il blocco struttura con i suoi contrassegni dei parametri viene passato alla variabile "segni" che ora conterrà i voti degli studenti. Quindi i segni vengono stampati come 98, 96, 100. Passaggio successivo per gli stessi membri della struttura, viene utilizzata un'altra istanza denominata "fail" per indicare gli stessi membri della struttura con segni diversi. Quindi i risultati vengono ora stampati come 34, 42, 13. Questo spiega chiaramente che le strutture avranno una copia delle variabili membro e quindi passeranno i membri ai blocchi funzione successivi.