1

次のスニペットがあるとします。

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'

私は何を間違っていますか?

4

2 に答える 2

3

問題は、現在、型パラメーターの型クラス制約がサブタイプと一致しないことです。それがバグなのか意図的なものなのかはわかりません。: Baseここでは、型パラメーターから制約を削除するだけTです。

于 2015-06-06T11:09:54.787 に答える