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 επιτρέπουν την επανάχρηση και την κεντρική διαχείριση της λογικής εργασίας με τις ιδιότητες.