2015-06-01 4 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, wie kann ich Verweise auf Arrays übergeben anstelle von Wert übergeben? Siehe den obigen Code für das, was ich bisher habe.Erstellen Sie einen Verweis auf ein Array in Nim

Antwort

9

In Nim ref s sind auf dem Haufen und müssen mit new zugewiesen werden. Sie können nicht einfach ein Stack-Array als ref verwenden, denn das wäre unsicher: Wenn das Array vom Stack verschwindet, zeigt die ref auf einen falschen Speicher. Stattdessen haben Sie zwei Möglichkeiten: Sie können stattdessen unsichere ptr s verwenden. Anders als ref s, sind sie nicht Müll gesammelt und können für unsichere Sachen verwendet werden. Alternativ können Sie auch direkt bref array machen.