On Monday, 24 March 2014 at 21:21:30 UTC, Andrej Mitrovic wrote:
On Monday, 24 March 2014 at 21:18:49 UTC, Peter Alexander wrote:
Would it be possible to perform private selective imports lazily?

This was discussed fairly recently: http://forum.dlang.org/thread/[email protected]?page=9 (and previous or next pages)

This is a very recent issue, as a matter of fact, I ran into it *TODAY*:
https://github.com/D-Programming-Language/phobos/pull/2047

By combining templates and aliases, you can have a library solution:

//----
template lazyWriteln()
{
    import std.stdio : writeln;
    alias lazyWriteln = std.stdio.writeln;
}

void main()
{
    lazyWriteln(5);
}
//----

Heck, with proper renamed imports, you can even re-use the initial name:

//----
template writeln()
{
    import std.stdio : stdwriteln = writeln;
    alias writeln = stdwriteln;
}

void main()
{
    writeln(5);
}
//----

HOWEVER (word of warning), for the second solutions, I've run into conflicting alias issues:
std/conv.d(4864): Error:
std.string.format!(char, uint, string, uint).format at std/string.d(2401)
conflicts with
std.string.format!(char, uint, string, uint).format at std/string.d(2401)

I didn't dig very far to know if this is 313/314 related, or a new issue though.

In any case, while not as convenient as a built-in "lazy import", it could be a solution worth digging into.

Reply via email to