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 გამოიტანს, რადგან მნიშვნელობა შეზღუდულია

ამ გზით, გადაფარვები საშუალებას აძლევს გამოიყენოს და ცენტრალიზება მოახდინოს თვისებებთან მუშაობის ლოგიკაზე.