with for reduced bloat
Neia Neutuladh
neia at ikeran.org
Mon Dec 24 02:27:06 UTC 2018
On Mon, 24 Dec 2018 02:04:26 +0000, Michelle Long wrote:
> enum X { A, B, C}
>
> void foo(X x);
>
> foo(X.A);
>
>
> vs
>
>
> enum X { A, B, C}
>
> void foo(with X x);
>
> foo(A);
How would that deal with name collisions, static imports, and nested
symbols?
Like the standard naming convention is to have camelCase enum value names.
So it would be something like:
---
bool caseSensitive = false;
getopt(
args,
// std.getopt.config.caseSensitive, std.getopt.config.allowBundling
caseSensitive, allowBundling,
"c|case-sensitive", "do a case-sensitive search", &caseSensitive);
---
Yuck.
The call site determines how to refer to symbols currently. It's still a
bit complex, dealing with imports, explicit declarations and aliases, type
hierarchies, and with statements. This would add even more complexity.
You can reduce the amount of call-site fluff with something like:
---
enum X { a, b, c; }
static foreach (m; __traits(allMembers, X))
{
mixin("enum " ~ m ~ " = X." ~ m ~ ";");
}
---
More information about the Digitalmars-d
mailing list