Sobes.tech
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 මුද්‍රණය වේ, මන්ද අගය සීමා කර ඇත

මෙම ආකාරයෙන්, ආවරණ මගින් ගුණාංග සමඟ වැඩ කිරීමේ තර්කය නැවත භාවිතා කිරීමට සහ මධ්‍යස්ථීකරණය කිරීමට ඉඩ සලසයි.