2016-05-31 3 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 ... hmm ... ok: оригинал действительно соответствует ... но, когда я помещаю его в новое место, он работает! Что-то ужасно связано с моей установкой в ​​оригинальном месте. (Nimcache?). Спасибо за проверку. :) – shaunc

Смежные вопросы