Junior — Middle
Kas on võimalik olemasolevat klassi või struktuuri laiendada, lisades sellele uue omaduse laienduste (extensions) abil?
sobes.tech AI
Vastus AI-lt
Swiftis võimaldavad laiendid (extensions) lisada olemasolevatele klassidele, struktuuridele või loenditele uusi meetodeid, arvutatud omadusi, initsialiseerijaid, alamindeksid ja sisemisi tüüpe. Kuid laiendid ei saa lisada salvestatud omadusi. See on seotud sellega, et laiendid ei muuda tüübi sisemist struktuuri, vaid ainult lisavad funktsionaalsust.
Kui soovite lisada uue omaduse, saate kasutada arvutatud omadust, mis tagastab jooksvalt arvutatud väärtuse, kuid see ei salvestata objekti mällu.
Näide arvutatud omadusest laienduses:
extension String {
var reversedString: String {
return String(self.reversed())
}
}
let text = "Hello"
print(text.reversedString) // Väljund: "olleH"
Kui peate salvestama uue väärtuse, saate kasutada seotud objekte Objective-C jooksutõrje kaudu, kuid see ei ole standardmeetod ja kehtib ainult NSObjectist pärinevate klasside puhul.