定义泛型函数类型

Define generic function type

给定以下代码段:

type
  Base = object of RootObj
  Consume*[T: Base] = proc(e: T): bool

我想为它从基础和基础消费者定义几个类型,像这样:

type
  BaseOne = object of Base
  ConsumeOne = Consume[BaseOne]

现在,当我创建一个新的 ConsumeOne:

let co: ConsumeOne = proc(b: BaseOne): bool = false

我收到以下编译器错误:Error: type mismatch: got (proc (b: BaseOne): bool{.gcsafe, locks: 0.}) but expected 'ConsumeOne'

我做错了什么?

可能有助于使 Consume gcsafe:

Consume*[T: Base] = proc(e: T): bool {.gcsafe.}

问题是类型参数的类型 class 约束当前不匹配子类型;我不知道这是错误还是故意的。现在,只需从类型参数 T.

中删除 : Base 约束