属性包装器的实现要求

2020-02-28 英文原文

如果用修饰符1 @propertyWrapper 标记一个类型,那它还必须满足一定的条件才会是有效的属性包装器。

首先,所有的属性包装器类型都必须要有一个叫做 wrappedValue 的属性。这个属性不能是静态的,而且至少要有和属性包装器类型相同的访问级别。属性包装器的 projectedValue 属性(如果有的话)也会受到如此限制。

其次,属性包装器不能有可失败的构造器2。另外,如果属性包装器的构造器有一个 wrappedValue 参数,那这个参数的类型必须和属性 wrappedValue 的类型相同,又或者是返回那个类型的 @autoclosure


  1. attribute,又译作“特性”。 ↩︎

  2. initializer,又译作“初始化器”。 ↩︎

许可协议:Apache 2.0 许可+运行时特许

使用要求带有 Self 或关联类型的协议

@dynamicCallable 的实现要求

comments powered by Disqus