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.