D的语言reference表示
@property函数只能有零个,一个或两个参数。
很清楚零和一个参数的属性是什么,并且在引用中有一个示例。但是,除了允许它们之外,该引用没有提及任何关于双参数属性的内容。那么,他们究竟做了什么?这种属性的参数是什么意思?
答案 0 :(得分:6)
具有两个参数的属性是UFCS setter。假设我们有:
struct Whatever {
void setProperty(int);
}
并且您想要添加属性setter而不是调用setProperty,但无论出于何种原因都无法更改struct本身。您可以添加这样的外部函数:
@property int my_prop(ref Whatever _this, int prop_value) {
_this.setProperty(prop_value);
return prop_value;
}
然后你可以打电话给它:
Whatever w;
w.my_prop = 10;
所以第一个参数是扩展名this
,第二个参数是传统的设置值。