作用:限制属性值的范围
@propertyWrapper // 实现内部属性(被包装过值的属性) wrappedValue
struct WrapOption {
private var storeValue: Int = 0
// @propertyWrapper 内部属性
var wrappedValue: Int {
get {
return self.storeValue
}
set {
if newValue > 255 {
self.storeValue = 255
} else if newValue < 0 {
self.storeValue = 0
} else {
self.storeValue = newValue
}
}
}
init(wrapValue value: Int) {
self.wrappedValue = value
}
}
struct MyColor {
@WrapOption var red: Int
@WrapOption var green: Int
@WrapOption var blue: Int
}
输出:
let color = MyColor(red: WrapOption(wrapValue: 500), green: WrapOption(wrapValue: 50), blue: WrapOption(wrapValue: -50))
print("red: \(color.red)")
print("green: \(color.green)")
print("blue: \(color.blue)")
red: 255
green: 50
blue: 0