2

我有:

@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]它时说它是NaNwhich is float.init。这意味着 a[0] 从未被设置并且a.x同时有效和​​无效。

我只想要一个浮点数组并有一个获取和设置属性 x。有没有办法做到这一点?而且我知道我可以a.x(3.14)用于设置a[0],但我想让它好像x是的成员属性a

4

1 回答 1

5

静态数组按值传递。您需要使用ref通过引用传递:

@property float x(ref float[2] vector)
@property void x(ref float[2] vector, float value)

注意:我指的是 D2。D1 静态数组中的 AFAIK 过去是按引用传递的,但在 D2 中,它们默认按值传递。

于 2012-12-17T13:09:00.110 回答