我如何在Nim中使用`concept`?

时间:2016-05-31 16:21:26

标签: nim

我想知道如何在nim中使用“概念”(0.13)。我有以下代码:

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是否已执行?

如何让编译器识别概念的使用?

1 个答案:

答案 0 :(得分:1)

你的例子编译并且对我来说很好(Nim 0.13.0)。您是否可能在源文件中输入错字?