8
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

Nim では、値渡しの代わりに参照を配列に渡すにはどうすればよいですか? 私がこれまでに持っているものについては、上記のコードを参照してください。

4

1 に答える 1

10

Nimrefでは、 はヒープ上にあり、 で割り当てる必要がありますnew。安全ではないため、スタック配列を単に として使用することはできませんref。配列がスタックから消えると、 はref間違ったメモリを指します。代わりに 2 つの選択肢があります: 代わりに unsafe を使用できますptr。s以外refはガベージ コレクションされず、安全でないものに使用できます。bまたは、直接作成することもできますref array

于 2015-06-01T23:09:03.503 に答える