我有用於從文件中讀取數據該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