定义泛型函数类型
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
约束
给定以下代码段:
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
约束