Sobes.tech
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.