簡體   English   中英

定義通用函數類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM