我有:
@property float x(float[2] vector)
{
return vector[0];
}
@property void x(float[2] vector, float value)
{
vector[0] = value;
}
我可以声明一个数组,例如float[2] a;
然后通过简单地调用a.x
来获取数组的第一个元素,但如果我想设置a[0]
,我就不能致电a.x = 3.14
。它不会给编译器带来问题,也不会引发异常。后来当我得到a[0]
时,它表示NaN
是float.init
。这意味着从未设置过[0]且a.x
同时有效且无效。
我只想要一个float数组并且具有get和set属性x。有没有办法做到这一点?
我知道我可以使用a.x(3.14)
来设置a[0]
,但我希望x
成为a
的成员属性。
答案 0 :(得分:5)
静态数组按值传递。您需要使用ref
通过引用传递:
@property float x(ref float[2] vector)
@property void x(ref float[2] vector, float value)
注意:我指的是D2。 D1静态数组中的AFAIK过去是通过引用传递的,但是在D2中它们默认是按值传递的。