如果用修饰符1 @propertyWrapper
标记一个类型,那它还必须满足一定的条件才会是有效的属性包装器。
首先,所有的属性包装器类型都必须要有一个叫做 wrappedValue
的属性。这个属性不能是静态的,而且至少要有和属性包装器类型相同的访问级别。属性包装器的 projectedValue
属性(如果有的话)也会受到如此限制。
其次,属性包装器不能有可失败的构造器2。另外,如果属性包装器的构造器有一个 wrappedValue
参数,那这个参数的类型必须和属性 wrappedValue
的类型相同,又或者是返回那个类型的 @autoclosure
。