在下面的示例中,我有一个Foo
具有泛型T
和foo
类型字段的对象T
。
是可继承的Foo
,并且有一个名为test
的过程,它应该创建并返回一个T
由子类定义的类型序列。
test
在我的代码的最新版本中, proc的第一行有一个错误:
无法实例化:'T'
如果我摆脱S
类型并将其替换为FooP
,则错误消失,但随后出现错误discard b.test()
:
类型不匹配:得到(BarP)
这是代码:
type
Foo[T] = object {.inheritable.}
foo:T
FooP[T] = ref Foo[T]
proc test[S, T](self: S): seq[T] =
var f: T = self.foo
var s: seq[T] = @[f]
s
type
Bar = object of Foo[int]
BarP = ref Bar
var b: BarP = new(Bar)
discard x.test()
我确定我只是把这一切搞砸了。有人能告诉我在这种情况下如何成功返回子类定义test()
的类型序列吗?T