Мой личный бложек. Пишу о жизни в Чехии, программировании и просто свои мысли обо всём. Пишу не часто.

 
foreach + массив структур
Заметки не программиста
Lang:
struct Item
{
int x;
}
Item[] items;

foreach (item; items)
{
// что делает этот код??? делает копию item
}

foreach (ref item; items)
{
// а вот этот код не делает копию а работает с ссылкой
}


Проблема в том, что foreach по значению используется очень редко, возможно только для каких-то маленьких структур когда её размер <=16 байт, потому что для больших структур сильно упадёт производительность за счёт ненужного копирования данных. В большинстве случаев используется foreach + ref item,
однако в D нет никакой возможности добавить warning на foreach без ref.
Т.е. получается D нет вообще никакого инструмента для поискаи отладки таких участков кода.
0