digitalmars.D.learn - Determining whether something is an interface?
- Christopher Wright (8/8) Nov 12 2007 You can determine whether a type is a class:
- torhu (3/13) Nov 12 2007 Doesn't this work? It's legal syntax, so I suppose it does what you wan...
- Daniel Keep (3/13) Nov 12 2007 Have you tried is( T == interface ) ?
- Christopher Wright (3/19) Nov 12 2007 No, I haven't. `interface` isn't a type, so it didn't occur to me to try...
- BCS (3/24) Nov 12 2007 the full list of things you can do is at:
You can determine whether a type is a class: is (T : Object) There's no equivalent for interfaces. You can use the compiles trait: __traits(compiles, class Something : T {}) Except you can't -- it only takes expressions, not declarations. There are traits for abstract classes (interfaces aren't) and final classes; how about something for interfaces? Or should I just start using abstract classes instead?
Nov 12 2007
Christopher Wright wrote:You can determine whether a type is a class: is (T : Object) There's no equivalent for interfaces. You can use the compiles trait: __traits(compiles, class Something : T {}) Except you can't -- it only takes expressions, not declarations. There are traits for abstract classes (interfaces aren't) and final classes; how about something for interfaces? Or should I just start using abstract classes instead?Doesn't this work? It's legal syntax, so I suppose it does what you want. is(foo == interface)
Nov 12 2007
Christopher Wright wrote:You can determine whether a type is a class: is (T : Object) There's no equivalent for interfaces. You can use the compiles trait: __traits(compiles, class Something : T {}) Except you can't -- it only takes expressions, not declarations. There are traits for abstract classes (interfaces aren't) and final classes; how about something for interfaces? Or should I just start using abstract classes instead?Have you tried is( T == interface ) ? -- Daniel
Nov 12 2007
Daniel Keep wrote:Christopher Wright wrote:No, I haven't. `interface` isn't a type, so it didn't occur to me to try that. Thank you, and thank torhu.You can determine whether a type is a class: is (T : Object) There's no equivalent for interfaces. You can use the compiles trait: __traits(compiles, class Something : T {}) Except you can't -- it only takes expressions, not declarations. There are traits for abstract classes (interfaces aren't) and final classes; how about something for interfaces? Or should I just start using abstract classes instead?Have you tried is( T == interface ) ? -- Daniel
Nov 12 2007
Reply to Christopher,Daniel Keep wrote:the full list of things you can do is at: http://www.digitalmars.com/d/1.0/expression.html#IsExpressionChristopher Wright wrote:No, I haven't. `interface` isn't a type, so it didn't occur to me to try that. Thank you, and thank torhu.You can determine whether a type is a class: is (T : Object) There's no equivalent for interfaces. You can use the compiles trait: __traits(compiles, class Something : T {}) Except you can't -- it only takes expressions, not declarations. There are traits for abstract classes (interfaces aren't) and final classes; how about something for interfaces? Or should I just start using abstract classes instead?Have you tried is( T == interface ) ? -- Daniel
Nov 12 2007