digitalmars.D.learn - How to compare two types?
- MarisaLovesUsAll (10/10) Aug 31 2014 How to compare two types? Will I use T.stringof instead of this?
- Adam D. Ruppe (9/9) Aug 31 2014 There's two ways:
- bearophile (5/9) Aug 31 2014 And what about:
- Adam D. Ruppe (3/4) Aug 31 2014 You could, but since it is static info you might as well use
- Adam D. Ruppe (2/2) Aug 31 2014 typeof() always gets the static type, typeid() is needed if you
- MarisaLovesUsAll (1/1) Sep 01 2014 Thanks for the answers!
How to compare two types? Will I use T.stringof instead of this? void main() { if(One is Two) {} //Error: type One is not an expression //Error: type Two is not an expression } class One {} class Two {} Regards, MarisaLovesUsAll
Aug 31 2014
There's two ways: static if(is(One == Two)) { } That compares the static types in a form of conditional compilation. http://dlang.org/expression.html#IsExpression If you want to compare the runtime type of a class object, you can do: if(typeid(obj_one) == typeid(obj_two)) that should tell you if they are the same dynamic class type.
Aug 31 2014
Adam D. Ruppe:If you want to compare the runtime type of a class object, you can do: if(typeid(obj_one) == typeid(obj_two)) that should tell you if they are the same dynamic class type.And what about: if (is(typeof(obj_one) == typeof(obj_two))) Bye, bearophile
Aug 31 2014
On Sunday, 31 August 2014 at 23:53:31 UTC, bearophile wrote:if (is(typeof(obj_one) == typeof(obj_two)))You could, but since it is static info you might as well use static if.
Aug 31 2014
typeof() always gets the static type, typeid() is needed if you want the dynamic type.
Aug 31 2014