1
我想连接两个相同元素类型的array
,创建一个新的array
,其中包含第一个数组的元素,后跟第二个数组的元素。由于长度是array
类型的一部分,因此我必须在编译时计算结果array
的长度(I1 + I2
)。这就是为什么我使用static[int]
类型限制的长度I1
和I2
:如何在Nim中连接两个数组?
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)
不幸的是,我得到这个错误信息:
Error: cannot generate code for: I1
proc concat[I1, I2: static[int]; T](a: array[I1, T], b: array[I2, T]):
^
为什么它不工作?你如何解决它?
稔编译器版本0.16.0(2017年1月8日)的Linux:AMD64]
版权所有(C)2006至17年由Andreas朗夫
谢谢,我_Nim编译器版本试了一下0.16.1(2017年5月7日)的Linux:AMD64] _(当前devel分支),它工作正常。 – maiermic