Sobes.tech
Junior — Middle

Оё имкон дорад, ки синф ё сохторҳои мавҷударо бо илова кардани хусусияти нав тавассути васеъкуниҳо (extensions) васеъ кунем?

sobes.tech AI

Ҷавоб аз AI

Дар Swift, васеъгардонии (extensions) имкон медиҳанд, ки ба синфҳо, сохторҳо ё enumerationҳои мавҷуда усулҳо, хосиятҳои ҳисобшаванда, оғозкунандагон, индексҳо ва намудҳои дохилшударо илова кунед. Аммо, васеъгардониҳо наметавонанд хосиятҳои захирашударо илова кунанд. Ин бо сабаби он аст, ки васеъгардониҳо сохтори дохилии намудро тағир намедиҳанд, балки танҳо функсионалиятро илова мекунанд.

Агар лозим ояд, ки хосияти нав илова кунед, метавонед хосияти ҳисобшавандаро истифода баред, ки арзишро дар вақти иҷро ҳисоб мекунад, аммо дар хотираи объект нигоҳ дошта намешавад.

Масалан, хосияти ҳисобшаванда дар васеъгардонӣ:

extension String {
    var reversedString: String {
        return String(self.reversed())
    }
}

ҳарф = "Hello"
print(ҳарф.reversedString) // Натиҷа: "olleH"

Агар лозим ояд, ки арзиши нав нигоҳ дошта шавад, метавонед объектҳои вобаста тавассути runtime-и Objective-C истифода баред, аммо ин усули стандартӣ нест ва танҳо барои синфҳое, ки аз NSObject мерос мегиранд, татбиқ мешавад.