2016-05-31 118 views
0

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

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

你的例子编译和工作正常(Nim 0.13.0)。你有可能在源文件中输入错字吗?

+0

Andrew ......嗯......好吧:原创不符合......但是,当我把它放在一个新的地方,它的工作原理!有些东西在原来的地方对我的设置有些screw screw。 (nimcache?)。感谢您的检查。 :) – shaunc