Junior — Middle
Je možné rozšíriť existujúcu triedu alebo štruktúru pridaním novej vlastnosti pomocou rozšírení?
sobes.tech AI
Odpoveď od AI
V Swiftu, rozšírenia (extensions) umožňujú pridávať nové metódy, vypočítané vlastnosti, inicializátory, indexery a vnorené typy k existujúcim triedam, štruktúram alebo enumeráciám. Avšak rozšírenia nemôžu pridávať uložené vlastnosti. To je spôsobené tým, že rozšírenia nemenia vnútornú štruktúru typu, ale iba pridávajú funkcionalitu.
Ak chcete pridať novú vlastnosť, môžete použiť vypočítanú vlastnosť, ktorá vracia hodnotu vypočítanú za behu, ale nie je uložená v pamäti objektu.
Príklad vypočítanej vlastnosti v rozšírení:
extension String {
var reversedString: String {
return String(self.reversed())
}
}
let text = "Hello"
print(text.reversedString) // Výstup: "olleH"
Ak je potrebné uložiť novú hodnotu, môžete použiť asociované objekty cez runtime Objective-C, ale toto nie je štandardná metóda a platí len pre triedy, ktoré dedičia od NSObject.