Expression for: foo is derived from Clock
Brother Bill
brotherbill at mail.com
Wed Feb 18 15:05:16 UTC 2026
On Wednesday, 18 February 2026 at 14:55:50 UTC, Nick Treleaven
wrote:
> On Wednesday, 18 February 2026 at 14:49:56 UTC, Brother Bill
> wrote:
>> ```Object foo``` is a class instance, perhaps null, perhaps a
>> Clock or AlarmClock or Vegetable.
>>
>> What is the expression to ask the boolean question:
>> Is foo of type Clock or a type derived from Clock, such as
>> AlarmClock?
>
> Use a cast:
> https://dlang.org/spec/expression.html#cast_class
>
>> I tried the obvious ```foo is Clock```, but this did not
>> compile.
>> ```
>> Error: type `Object` is not an expression
>> bool isClock = (o is Clock)
>> ^
>> ```
>
> That use of `is` is a different expression:
> https://dlang.org/spec/expression.html#identity_expressions
That's it!
```
const(Clock) clock = cast(const Clock)o;
```
If clock is null, then o is either ```null``` or not derived from
Clock.
Otherwise o, such as AlarmClock will have access to only the
Clock features of o.
More information about the Digitalmars-d-learn
mailing list