È possibile estendere una classe o una struttura esistente aggiungendo una nuova proprietà tramite estensioni?
sobes.tech AI
Risposta dell'AI
In Swift, le estensioni consentono di aggiungere nuovi metodi, proprietà calcolate, inizializzatori, sottoscritti e tipi annidati a classi, strutture o enumerazioni esistenti. Tuttavia, le estensioni non possono aggiungere proprietà memorizzate. Ciò è dovuto al fatto che le estensioni non modificano la struttura interna del tipo, ma aggiungono solo funzionalità.
Se è necessario aggiungere una nuova proprietà, si può usare una proprietà calcolata, che restituisce un valore calcolato in tempo di esecuzione, ma non viene memorizzato nella memoria dell’oggetto.
Esempio di proprietà calcolata in un’estensione:
extension String {
var reversedString: String {
return String(self.reversed())
}
}
let text = "Hello"
print(text.reversedString) // Output: "olleH"
Se si deve memorizzare un nuovo valore, si possono usare oggetti associati tramite il runtime di Objective-C, ma questa non è una pratica standard e si applica solo a classi che ereditano da NSObject.