Swift@PropertyRapper';自我';引用封闭结构/类,而不是属性包装结构

Swift@PropertyRapper';自我';引用封闭结构/类,而不是属性包装结构,swift,property-wrapper,Swift,Property Wrapper,我用Swift编写了一个简单的属性包装,并尝试使用Self和Self引用projectedValue属性中的属性包装结构/类Reference: @propertyWrapper 课堂参考{ 私有var值:T init(wrappedValue:T){value=wrappedValue} var wrappedValue:T{ 获取{value} 设置{value=newValue} } var projectedValue:Self{Self} } 但是,Self似乎不是指类型Refere

我用Swift编写了一个简单的属性包装,并尝试使用
Self
Self
引用
projectedValue
属性中的属性包装结构/类
Reference

@propertyWrapper
课堂参考{
私有var值:T
init(wrappedValue:T){value=wrappedValue}
var wrappedValue:T{
获取{value}
设置{value=newValue}
}
var projectedValue:Self{Self}
}
但是,
Self
似乎不是指类型
Reference
。例如,如果我在结构中声明这样的属性,然后使用
projectedValue

struct Test {
    @Reference var value: Int = 1
}

let t = Test()
let ref = t.$value
变量
ref
的类型为
Test
,而不是
Reference
。此代码不会编译并导致分段错误,但Xcode不会返回任何交互错误。要使代码按预期工作,我必须这样声明:

var projectedValue:Reference{self}

这感觉很奇怪,是不是故意的行为?我查看了苹果的文档,但没有记录这种行为。

我无法复制这种行为。我犯了一个错误,这也很奇怪。。。为什么不做
var projectedValue:Reference{self}
?唯一的原因是
self
非常方便,我在代码中到处都使用这个模式。这个错误似乎已经被报告过多次了:例如。哦,我错了,代码也没有为我编译。但是,Xcode没有显示任何交互错误,并且Xcode成功地推断了变量类型。我无法重现这一点。我犯了一个错误,这也很奇怪。。。为什么不做
var projectedValue:Reference{self}
?唯一的原因是
self
非常方便,我在代码中到处都使用这个模式。这个错误似乎已经被报告过多次了:例如。哦,我错了,代码也没有为我编译。但是,Xcode不会显示任何交互错误,并且Xcode成功地推断了变量类型。