我如何在 Nim 中使用“概念”?
How do I use a `concept` in Nim?
我想知道如何在 nim (0.13) 中使用 "concept"。我有以下代码:
type
T = concept t
t.a is string
T0 = ref object
a: string
T1 = ref object
a: string
q: string
proc echoT(t: T) : void =
echo "hello " & t.a
echoT(T0(a: "T0"))
echoT(T1(a: "T1", q: "q"))
然而,编译器在第一次调用 echoT 时报错:
t.nim(21, 6) Error: type mismatch: got (T0)
这与将 echoT
声明替换为:
的效果不一样吗?
proc echoT[T](t: T): void = echo "hello " & t.a
(编译和 运行),除了在概念版本中,约束
t.a is string
是否强制执行?
如何让编译器识别概念的使用?
你的例子编译并适用于我 (Nim 0.13.0)。有没有可能是你的源文件打错了?
我想知道如何在 nim (0.13) 中使用 "concept"。我有以下代码:
type
T = concept t
t.a is string
T0 = ref object
a: string
T1 = ref object
a: string
q: string
proc echoT(t: T) : void =
echo "hello " & t.a
echoT(T0(a: "T0"))
echoT(T1(a: "T1", q: "q"))
然而,编译器在第一次调用 echoT 时报错:
t.nim(21, 6) Error: type mismatch: got (T0)
这与将 echoT
声明替换为:
proc echoT[T](t: T): void = echo "hello " & t.a
(编译和 运行),除了在概念版本中,约束
t.a is string
是否强制执行?
如何让编译器识别概念的使用?
你的例子编译并适用于我 (Nim 0.13.0)。有没有可能是你的源文件打错了?