November 28, 2013 enum subsets? | ||||
|---|---|---|---|---|
| ||||
I'd like to define an enum type with only a subset of the fields of another enum.
enum Foo { A, B, C }
enum Bar : Foo { Foo.A, Foo.B }
void main() {
//Foo f = Bar.A; // Should be OK.
//Bar b = Foo.A; // Should be an error.
}
I receive the errors:
temp.d(2): Error: type only allowed if anonymous enum and no enum type
temp.d(2): Error: if type, there must be an initializer
temp.d(2): Error: type only allowed if anonymous enum and no enum type
temp.d(2): Error: if type, there must be an initializer
Defining a subset like that is quite useful, it allows to statically avoid some bugs.
An alternative and more clear syntax:
enum Foo { A, B, C }
subset enum Bar : Foo { A, B }
superset enum Spam : Foo { D }
void main() {}
Perhaps something like that can be implemented with Phobos library code (with a worse syntax)?
Bye,
bearophile
| ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply