Nim

2015-06-01 13 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 

Bir dizide başvuru oluşturmak Nim'de, değerlere geçirme yerine dizilere nasıl başvuru yapabilirim? Şimdiye kadar sahip olduğum için yukarıdaki kod bakın.Nim

cevap

9

Nim ref s yığınında ve new ile ayrılmalıdır. Bir yığın dizisini ref olarak kullanamazsınız, çünkü bu güvenli olmaz: Dizi yığından kaybolduğunda, ref yanlış belleğe işaret eder. Bunun yerine iki seçeneğiniz vardır: Bunun yerine güvensiz ptr s kullanabilirsiniz. ref s dışında, toplanan çöp değildir ve güvenli olmayan şeyler için kullanılabilir. Alternatif olarak, b'u bir ref array doğrudan yapabilirsiniz.