Prima domanda:Modo corretto per passare i parametri dell'array alle funzioni D
I parametri di funzione di array D sono sempre passati per riferimento o per valore? Inoltre, la lingua implementa Copy on Write per gli array? Ad esempio:
void foo(int[] arr)
{
// is arr a local copy or a ref to an external array?
arr[0] = 42; // How about now?
}
2 ° Domanda:
Supponiamo che io sono un grande allineamento che verrà passato a funzionare foo
come parametro di sola lettura e dovrebbe essere evitato il più possibile la copia della matrice, dal momento che si presume che sia un oggetto molto grande. Quale tra i seguenti (o nessuno di loro) sarebbe la migliore dichiarazione per la funzione foo
:
void foo(const int[] bigArray)
void foo(in int[] bigArray)
void foo(const ref int[] bigArray)
nella tua lista è un no-op (non so dove abbia senso), inoltre, utilizzare l'uso const immutabile dove è opportuno perché è più forte di const'ness – Quonux