美文网首页
swift中的propertyWrapper

swift中的propertyWrapper

作者: 梁森的简书 | 来源:发表于2021-09-15 11:24 被阅读0次

    属性包装器

    用法

    @propertyWrapper
    public struct Default<T> {
    
        private var defaultValue: T
        var value: T?
        public init(_ defaultValue: T) {
            self.defaultValue = defaultValue
        }
    
        public var wrappedValue: T? {
            get { return value ?? defaultValue }
            set { value = newValue }
        }
    
    }
    
    @propertyWrapper
    struct TwelveOrLess {
        private var number: Int
    
        // wrappedValue变量的名字是固定的
        var wrappedValue: Int {
            get { return number }
            set { number = min(newValue, 12) }
        }
    
        init() {
            self.number = 0
        }
    }
    
    struct SmallRectangle {
        @TwelveOrLess var height: Int
        @TwelveOrLess var width: Int
    }
    
    

    作用

    1. 给属性赋一个默认值
    2. 避免一些重复的代码

    原理

    在使用了propertyWrapper后,取属性值的时候实际取的是propertyWrapper中的wrappedValue。

    相关文章

      网友评论

          本文标题:swift中的propertyWrapper

          本文链接:https://www.haomeiwen.com/subject/gkqhgltx.html