Sobes.tech
Junior — Middle

Μπορείτε να υλοποιήσετε το δικό σας περιτύλιγμα ιδιότητας στη γλώσσα Swift;

sobes.tech AI

Απάντηση από AI

Ναι, μπορείτε να δημιουργήσετε τα δικά σας property wrappers στη Swift. Αυτός είναι ένας ειδικός τύπος που encapsulates τη λογική πρόσβασης και αποθήκευσης της τιμής της ιδιότητας.

Παράδειγμα ενός απλού wrapper που περιορίζει την τιμή της ιδιότητας σε ένα εύρος από 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, καθώς η τιμή περιορίζεται

Έτσι, τα property wrappers επιτρέπουν την επανάχρηση και την κεντρική διαχείριση της λογικής εργασίας με τις ιδιότητες.