如何为数组创建set属性?

Bos*_*sak 2 arrays d properties

我有:

@property float x(float[2] vector)
{
    return vector[0];
}

@property void x(float[2] vector, float value)
{
    vector[0] = value;
}
Run Code Online (Sandbox Code Playgroud)

我可以声明一个数组,例如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.

And*_*vić 5

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

@property float x(ref float[2] vector)
@property void x(ref float[2] vector, float value)
Run Code Online (Sandbox Code Playgroud)

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