Junior
Qual principio di programmazione consente di usare i generici?
sobes.tech AI
Risposta dell'AI
Polimorfismo di sottotipo.
I generici in Swift implementano il polimorfismo parametrico, consentendo di scrivere codice che può lavorare con diversi tipi senza conoscerli in anticipo, ma richiedendo che questi tipi rispettino determinati vincoli (ad esempio, protocolli).
Esempio di utilizzo dei generici:
// Definizione di una funzione generica che accetta due parametri dello stesso tipo T,
// dove il tipo T deve conformarsi al protocollo Equatable.
func areEqual<T: Equatable>(_ a: T, _ b: T) -> Bool {
return a == b
}
// Uso della funzione generica con Int
let intResult = areEqual(5, 5) // true
// Uso della funzione generica con String
let stringResult = areEqual("hello", "world") // false
Esempio di struttura generica (stack):
// Definizione di una struttura generica "Stack", che può contenere elementi di qualsiasi tipo T.
struct Stack<T> {
private var elements: [T] = []
mutating func push(_ element: T) {
elements.append(element)
}
mutating func pop() -> T? {
return elements.popLast()
}
}
// Uso della struttura generica con Int
var intStack = Stack<Int>()
intStack.push(1)
intStack.push(2)
let poppedInt = intStack.pop() // 2
// Uso della struttura generica con String
var stringStack = Stack<String>()
stringStack.push("A")
stringStack.push("B")
let poppedString = stringStack.pop() // "B"
Vantaggi dell’uso dei generici:
- Sicurezza dei tipi: Il compilatore verifica i tipi durante la compilazione, riducendo la probabilità di errori in fase di runtime.
- Riutilizzo del codice: Lo stesso codice può lavorare con diversi tipi.
- Prestazioni: Non è necessario effettuare cast di tipi in fase di esecuzione.
- Astrazione: Permettono di astrarsi dai tipi di dati specifici.