On Sunday, 15 December 2013 at 11:27:51 UTC, bearophile wrote:
By the way, I am not criticizing "D verbose approach". I have criticized the weak typing:

enum Foo { good, bad }
void main() {
    int x = Foo.good; // Weak typing.
}

Hum... Well, it's not actually weak typing. It's strong typing with implicit cast *to* the base type (int by default).

For example:

enum Foo
{
    a,
    b,
    c,
}

void foo(Foo)
{}

void main()
{
    foo(1); //Nope. I want a Foo.
}

Whether this is a good or bad thing I don't know. If D where "just" D, I'd say it's a bad thing (it should require an explicit cast). However, arguably, there might be enough C heritage in D to justify it.

As long as we don't have "int to enum" implicit conversion, I think it's fine.

And some people have criticized the verbosity in special situations, like this:


enum Foo { good, bad }
void bar(Foo f) {}
void main() {
    // bar(bad); // Not enough
    bar(Foo.bad);
}

I am of those that think this is a good thing.

Bye,
bearophile

Reply via email to