Ich möchte zwei array
s desselben Elementtyps erstellen, um ein neues array
zu erstellen, das die Elemente des ersten Arrays gefolgt von den Elementen des zweiten Arrays enthält. Da die Länge zum Typ array
gehört, muss ich zur Kompilierzeit die Länge des Ergebnisses array
berechnen (I1 + I2
). Deshalb habe ich static[int]
als Typ Einschränkung für die Längen verwenden I1
und I2
:Wie werden zwei Arrays in Nim dargestellt?
proc concat[I1, I2: static[int]; T](a: array[I1, T], b: array[I2, T]):
array[I1 + I2, T] =
for i in low(a)..high(a):
result[i] = a[i]
for i in low(b)..high(b):
result[i + high(a) + 1] = b[i]
# example
let a = [1, 2, 3, 4]
let b = [5, 6, 7]
let c = concat(a, b)
echo repr(c)
Leider bekomme ich diese Fehlermeldung:
Error: cannot generate code for: I1
proc concat[I1, I2: static[int]; T](a: array[I1, T], b: array[I2, T]):
^
Warum funktioniert es nicht? Wie reparierst du es?
Nim Compiler Version 0.16.0 (2017.01.08) [Linux: amd64]
Copyright (c) 2006-2017 von Andreas Rumpf
Danke, ich versuchte es mit _Nim Compiler Version 0.16.1 (2017.05.07) [Linux: amd64] _ (aktuelle Entwicklung Zweig) und es funktioniert gut. – maiermic