我有用于从文件中读取数据该d码:如何获得对D中数组元素的引用?
int foo (SomeStruct[] somestruct_array)
{
// get file_handle...
for (uint i = 0; i < 1000; i++) {
file_handle.readf ("%e %e %e %e %e %e\n",
&(somestruct_array[i].pos_x), &(somestruct_array[i].pos_y),
&(somestruct_array[i].pos_z), &(somestruct_array[i].vel_x),
&(somestruct_array[i].vel_y), &(somestruct_array[i].vel_z));
}
return 0;
}
正如你所看到的,线越来越幽长,我不断重复somestruct_array[i]
。这不是什么大不了的事,但我试图缩短该写:
int foo (SomeStruct[] somestruct_array)
{
// get file_handle...
for (uint i = 0; i < 1000; i++) {
auto elem = somestruct_array[i];
file_handle.readf ("%e %e %e %e %e %e\n",
&(elem.pos_x), &(elem.pos_y),
&(elem.pos_z), &(elem.vel_x),
&(elem.vel_y), &(elem.vel_z));
}
return 0;
}
这将导致所有的元素成员是nan
。
所以:是否有可能获得对数组元素的引用?
AFAIK“alias elem = somestruct_array [i]”也应该起作用,不是吗? – 2013-02-11 19:35:26
作品! @МихаилСтрашун:这似乎并不奏效。编译器说, '别名elem不能别名表达式somestruct_array [i]' – steffen 2013-02-11 19:51:59
@steffen是的,我检查了http://dlang.org/declaration.html#AliasDeclaration,它似乎只接受现在的类型。奇怪的是,我记得使用它来表达,并认为它是一个整洁的功能。是一个整洁的错误最有可能:) – 2013-02-11 20:11:28