2015-06-01 15 views
7
var b: array[5, int] 

type 
    ArrRef = ref array[5, int] 

var c : ArrRef 
echo repr(c) # nil 
c = addr b # doesn't compile, says type is Array constructor, expected reference 

In Nim, come posso passare i riferimenti alle matrici invece di passare per valore? Vedi il codice sopra per quello che ho finora.creare un riferimento a un array in Nim

risposta

9

In Nim ref s sono in memoria e devono essere allocati con new. Non è possibile utilizzare uno stack array come ref perché ciò non sarebbe sicuro: quando l'array scompare dallo stack, lo ref punta a una memoria errata. Invece, hai due possibilità: puoi usare non sicuro ptr s. Oltre a ref s, non vengono raccolti e possono essere utilizzati per elementi non sicuri. In alternativa è possibile effettuare b a ref array direttamente.

Problemi correlati