Junior — Middle
Can you explain the concept of Property Wrapper and its advantage when working with properties in Swift?
sobes.tech AI
Answer from AI
Property Wrapper in Swift is a mechanism that allows you to encapsulate the logic for property access within a separate type, which manages reading and writing the value.
Advantages of Property Wrapper:
- Enables code reuse for validation, storage, transformation, or other operations when accessing a property.
- Makes the code cleaner and more convenient by hiding implementation details.
- Improves code readability and maintainability.
Example:
@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 Settings {
@Clamped(0...10) var volume: Int = 5
}
var settings = Settings()
settings.volume = 15
print(settings.volume) // Will output 10, as the value is limited to the range
In this example, Clamped ensures that the value of the volume property always stays within the specified range.