Swift: I Generics

      Nessun commento su Swift: I Generics

swift-hero

Ciao a tutti cari amici di iProg, in questa lezioni voglio parlarvi dei generics. I generics ci consentono di rendere il codice più stabile e rilevare con maggiore facilità gli errori, inoltre essi ci consentono di riutilizzare il codice. Se vi state chiedendo come credo che  un esempio pratico  renderà le cose molto più chiare, supponiamo di avere due variabili e di queste ne vogliamo scambiare i valori, la prima cosa da fare prima di implementare la funzione è quella di chiederci di che tipo sono le nostre variabili, se già siamo a conoscenza del tipo non c’è nessun problema ma nel momento in cui non conosciamo il tipo oppure vogliamo utilizzare tale funzione per diversi tipi (ad esempio scambiare 2 stringhe o 2 interi)  possiamo utilizzare i generics

var var1 = 1

var var2 = 2

func swapVal<T> (inout a:T, inout b:T){

var temp = a

a = b

b = temp

}

swapVal(&var1, &var2)

prontln(var1)

 

Lo stesso codice può essere utilizzato anche se var1 e var2 fossero statte 2 stringhe.

La parte interessante del codice è: func swapVal<T> (inout a:Tinout b:T) , all’interno delle parentesi <> scrivo un tipo generico astratto,  i parametri della funzione sono dei tipi generici astratti. T è noto anche come parametro “tipo”, possono esserci più parametri tipo, in questo caso essi vengono separati da una virgola. Oltre a creare funzioni generiche è possibile  definire anche classi strutture e enumerazioni generiche. Anche in questo caso vi mostrerò un esempio pratico, in questo esempio andremo a creare la struttura dati pila.

struct Pila <T> {

var elementi = [ T]()

mutating func   push (ele:T){

elementi.append(ele)

}

mutating func pop () ->T {

return elementi.removeLast()

}

 

}

// Stack di stringhe

var pila = Pila<Int>()

for (var i = 1; i<=5 ; i++ ){

pila.push(i)

}

pila//[1,2,3,4,5]

pila.pop()//5

 

Come sempre se avete qualche domanda o dubbio lasciate pure un commento sotto l’articolo o su Facebook