我刚刚开始使用 Nim,并且遇到了泛型问题。
这是一个简化的示例,可以复制我遇到的问题。从具有泛型类型的简单对象类型开始T
,并创建它的实例:
type Foo[T] = object
bar: T
var my_foo = Foo[string](bar: "foobar")
如果我proc
用泛型类型创建 a ,然后返回对象的字段,它T
的返回值是type ,它工作正常:T
bar
T
# This works!
proc test[T](f: Foo, n: int): T =
f.bar
echo test(my_foo, 1)
但是,如果我想返回T
来自Foo.bar
type 字段的多个副本的序列T
,如下所示:
# This fails!
proc test2[T](f: Foo, n: int): seq[T] =
var s: T = f.bar
var r: seq[T] = @[]
for x in 1..n:
r.add(s)
result = r
echo test2(my_foo, 3)
然后我收到以下错误:
错误:无法实例化:'T'
任何人都可以提供任何关于为什么会这样以及如何正确地做到这一点的见解吗?