D - 具有两个参数的属性
D - properties with two arguments
D 的语言 reference 指出
@property functions can only have zero, one or two parameters.
具有零个参数和一个参数的属性的作用非常清楚,参考资料中每个都有一个示例。但是,除了允许使用双参数属性外,该参考文献并未提及任何有关双参数属性的信息。那么,他们实际上做了什么? 属性 的参数是什么意思?
具有两个参数的 属性 将是一个 UFCS setter。假设我们有:
struct Whatever {
void setProperty(int);
}
并且您想添加一个 属性 setter 而不是调用 setProperty,但无论出于何种原因都不能更改结构本身。您可以像这样添加一个外部函数:
@property int my_prop(ref Whatever _this, int prop_value) {
_this.setProperty(prop_value);
return prop_value;
}
那你就可以调用了:
Whatever w;
w.my_prop = 10;
所以第一个参数是扩展this
,第二个参数是传统设置值
D 的语言 reference 指出
@property functions can only have zero, one or two parameters.
具有零个参数和一个参数的属性的作用非常清楚,参考资料中每个都有一个示例。但是,除了允许使用双参数属性外,该参考文献并未提及任何有关双参数属性的信息。那么,他们实际上做了什么? 属性 的参数是什么意思?
具有两个参数的 属性 将是一个 UFCS setter。假设我们有:
struct Whatever {
void setProperty(int);
}
并且您想添加一个 属性 setter 而不是调用 setProperty,但无论出于何种原因都不能更改结构本身。您可以像这样添加一个外部函数:
@property int my_prop(ref Whatever _this, int prop_value) {
_this.setProperty(prop_value);
return prop_value;
}
那你就可以调用了:
Whatever w;
w.my_prop = 10;
所以第一个参数是扩展this
,第二个参数是传统设置值