关于 属性包装器 - Property Wrappers

作用:限制属性值的范围

@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

你可能感兴趣的:(关于 属性包装器 - Property Wrappers)