Junior — Middle
Swift тилинде өзүнүн өзгөчөлүк каптоосун ишке ашырууга болобу?
sobes.tech AI
AIден жооп
ඔව්, Swift හි ඔබට ඔබගේම ගුණාංග ආවරණ (property wrappers) නිර්මාණය කළ හැකිය. මෙය විශේෂ වර්ගයක් වන අතර, ගුණාංගයේ ප්රවේශය සහ ගබඩා කිරීමේ තර්කය ඇතුළත් කරයි.
උදාහරණයක් ලෙස, 0 සිට 100 දක්වා පරාසයක ගුණාංගයේ අගය සීමා කරන සරල ආවරණයක්:
@propertyWrapper
struct Clamped {
private var value: Int
private let range: ClosedRange<Int>
var wrappedValue: Int {
get { value }
set { value = min(max(newValue, range.lowerBound), range.upperBound) }
}
init(wrappedValue initialValue: Int, _ range: ClosedRange<Int>) {
self.range = range
self.value = min(max(initialValue, range.lowerBound), range.upperBound)
}
}
struct Player {
@Clamped(0...100) var health: Int = 100
}
var player = Player()
player.health = 150
print(player.health) // 100 මුද්රණය වේ, මන්ද අගය සීමා කර ඇත
මෙම ආකාරයෙන්, ආවරණ මගින් ගුණාංග සමඟ වැඩ කිරීමේ තර්කය නැවත භාවිතා කිරීමට සහ මධ්යස්ථීකරණය කිරීමට ඉඩ සලසයි.