我有一个concept
这样的:
type Foo = concept x, y
x.test(y) is bool
然后是一个尝试定义实现方法的类型concept
:
type Bar = object
s: string
proc test(x: Bar, y: string): bool =
x.s == y
以及具有通用字段的类型,T: Foo
其构造函数接收T: Foo
:
type Baz[T: Foo] = object
f: T
proc make[T: Foo](f: T): auto =
result = Baz[T](f: f)
当我创建一个 newBar
并将其传递给make
proc 以创建一个 newBaz
时,它不会编译:
let bar = Bar(s: "whatever")
let made = make[Bar](bar)
错误:类型不匹配:得到(条形图)但预期为“T”
但是,如果我放弃这个y
概念,它就会编译,比如x.test is bool
并相应地更新test
proc。
我究竟做错了什么?