2
我剛剛開始使用Nim,並且遇到了仿製藥的問題。爲什麼無法推斷泛型?
這是一個複製我遇到的問題的簡化示例。開始使用具有泛型類型T
一個簡單的對象類型,並作出它的一個實例:
type Foo[T] = object
bar: T
var my_foo = Foo[string](bar: "foobar")
如果我創建一個proc
與通用型T
,以及T
,然後返回一個返回值,它工作正常鍵入bar
場的對象,這是T
:
# This works!
proc test[T](f: Foo, n: int): T =
f.bar
echo test(my_foo, 1)
然而,如果不是我想返回來自Foo.bar
場它的類型是的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)
然後我得到了以下錯誤:
Error: cannot instantiate: 'T'
任何人都可以請提供任何洞察力,這是爲什麼,以及如何正確地做到這一點?
是的,這似乎照顧它。謝謝! – 2015-01-21 01:47:33