这是代码:
protocol A {
var a: Int { get set }
}
extension A {
var convenientAccessor: Int {
get { return a }
set { a = newValue }
}
}
class B: A {
var a: Int = 0
}
func acceptsB (instance: B) {
instance.a = 1 // This compiles
instance.convenientAccessor = 2 // This does not
}
我有点理解这里的问题,但我真的很想得到更深入理解的人的回答,更重要的是我的问题的解决方法,即我想传递已知的类类型并能够使用方便的访问器不受我无法使用值类型的限制。就我而言,定义这些方便访问器的协议不应该是类绑定的(它们对值类型完全有效且有用),因此虽然这在技术上是一种解决方法,但我并不满意。