Как сравнить два typedesc в шаблоне на равенство
Я хотел бы иметь возможность сравнить два typedesc в шаблоне, чтобы увидеть, ссылаются ли они на один и тот же тип (или, по крайней мере, имеют одно и то же имя типа), но не уверен как. ==
Оператор не позволяет этого.
type
Foo = object
Bar = object
template test(a, b: expr): bool =
a == b
echo test(Foo, Foo)
echo test(Foo, Bar)
Это дает мне это:
Error: type mismatch: got (typedesc[Foo], typedesc[Foo])
Как это может быть сделано?
1 ответ
Решение
is
Оператор помогает: http://nim-lang.org/docs/manual.html
type
Foo = object
Bar = object
template test(a, b: expr): bool =
#a is b # also true if a is subtype of b
a is b and b is a # only true if actually equal types
echo test(Foo, Foo)
echo test(Foo, Bar)