Junior — Middle
Lehet-e további tulajdonságokat hozzáadni meglévő osztályokhoz vagy objektumokhoz kiterjesztéseken keresztül?
sobes.tech MI
Válasz az MI-től
Swiftben a kiterjesztések (extensions) lehetővé teszik új módszerek, számított tulajdonságok és inicializálók hozzáadását meglévő osztályokhoz, szerkezetekhez és felsorolásokhoz, de nem lehet tárolt tulajdonságokat hozzáadni.
Vagyis, nem lehet további tárolt tulajdonságokat hozzáadni egy kiterjesztésen keresztül, de hozzá lehet adni számított tulajdonságokat, amelyek meglévő adatok alapján számítódnak ki.
Példa egy számított tulajdonságra egy kiterjesztésben:
extension String {
var isPalindrome: Bool {
return self == String(self.reversed())
}
}
Ha tárolt tulajdonságokat szeretne hozzáadni, általában asszociált objektumokat (associated objects) használnak az Objective-C futásidejében, de ez nem egy szabványos módszer, és nem támogatott közvetlenül Swiftben.