2016-05-31 71 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