On Thursday, 21 November 2013 at 18:44:39 UTC, Steve Teale wrote:
On Thursday, 21 November 2013 at 17:39:28 UTC, Andrei Alexandrescu wrote:
On 11/21/13 8:48 AM, Steve Teale wrote:
Could 'with' be extended to cover enum names do you think? Also a supplementary question - does auto lock out some things like this, are
there other examples?

Guess it could. One other thing we could do is to make enum namespaces behave like imports.

Andrei

I'd love to understand "make enum namespaces behave like imports", but I should probably ask that on D Learn ;=)

When you import from a module, you only need to specify the module name if there is ambiguity. So for example:

//----
import std.array;

void main()
{
    split("hello"); //OK!
}
//----
import std.array;
import std.algorithm;

void main()
{
split("hello"); //Wait... did you want std.algorithm.split, or std.array.split?
    std.array.split("hello"); //OK! That's clearer now.
}
//----

What Andrei is saying is that an enum *could* work the same way:

enum RedBlack //For red black trees
{
    Red,
    Black,
}
enum BlackWhite //For Checker boards
{
    Black,
    White,
}

void main()
{
    writeln(Red); //OK! No problem!
    writeln(Black); //I'm sorry... that's ambiguous :/
    writeln(RedBlack.Black); //OK! That's clearer now!
}

Whether or not it *should*, I don't know. "Why not?" I like to say :)

Reply via email to