Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
November 12, 2007 Determining whether something is an interface? | ||||
---|---|---|---|---|
| ||||
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? |
November 12, 2007 Re: Determining whether something is an interface? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christopher Wright | 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)
|
November 12, 2007 Re: Determining whether something is an interface? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christopher Wright |
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
|
November 13, 2007 Re: Determining whether something is an interface? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Keep | Daniel Keep wrote:
>
> 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
No, I haven't. `interface` isn't a type, so it didn't occur to me to try that. Thank you, and thank torhu.
|
November 13, 2007 Re: Determining whether something is an interface? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christopher Wright | Reply to Christopher, > Daniel Keep wrote: > >> 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 >> > No, I haven't. `interface` isn't a type, so it didn't occur to me to > try that. Thank you, and thank torhu. > the full list of things you can do is at: http://www.digitalmars.com/d/1.0/expression.html#IsExpression |
Copyright © 1999-2021 by the D Language Foundation