D - 具有两个参数的属性

时间:2017-07-03 13:40:53

标签: d

D的语言reference表示

  

@property函数只能有零个,一个或两个参数。

很清楚零和一个参数的属性是什么,并且在引用中有一个示例。但是,除了允许它们之外,该引用没有提及任何关于双参数属性的内容。那么,他们究竟做了什么?这种属性的参数是什么意思?

1 个答案:

答案 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,第二个参数是传统的设置值。