【问题标题】:How to make set property for an array?如何为数组设置属性?
【发布时间】:2012-12-04 14:04:38
【问题描述】:

我有:

@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。这意味着 a[0] 从未设置,a.x 同时有效和​​无效。

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

【问题讨论】:

    标签: arrays properties d


    【解决方案1】:

    静态数组按值传递。需要使用ref进行引用传递:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多