2016-05-31 9 views
0

nim(0.13)で「コンセプト」を使用する方法が不思議です。Nimで `concept`を使うにはどうすればいいですか?

t.nim(21, 6) Error: type mismatch: got (T0)

べきではありません。この作品でechoT宣言を交換すると同じ:

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の最初の呼び出し時に文句を言う:私は、次のコードを持っています

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

関連する問題