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
.
静态数组按值传递.您需要使用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中它们默认是按值传递的.