[英]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'
我究竟做錯了什么?
問題是類型參數的類型類約束當前與子類型不匹配; 我不知道這是一個bug還是故意的。 現在,只需從類型參數T
刪除: Base
約束。
也許有助於制作消費gcsafe:
Consume*[T: Base] = proc(e: T): bool {.gcsafe.}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.