On Saturday, 7 April 2018 at 11:19:44 UTC, meppl wrote:
On Saturday, 7 April 2018 at 10:25:19 UTC, bauss wrote:
On Saturday, 7 April 2018 at 09:07:48 UTC, sdvcn wrote:
true?stt="AA":stt="BB"; <<<<-----///Out:BB
It's an UB.
Not a bug.
I want `condition ? expr1 : expr2` to behave like:
-----
auto qc( alias condition, string expr1, string expr2)() {
if( condition) {
return mixin( expr1);
} else {
return mixin( expr2);
}
}
-----
You can do so today with lazy:
---
import std.stdio;
auto qc(E1, E2)(bool condition, lazy E1 expr1, lazy E2 expr2)
{
if (condition)
{
return expr1;
}
else
{
return expr2;
}
}
void main()
{
qc(true, "A".writeln, "B".writeln);
string s;
qc(true, s = "A", s = "B");
s.writeln;
}
---
https://run.dlang.io/is/ymZBht
https://dlang.org/articles/lazy-evaluation.html