/* Similarly but different (here I am instantiating a new
struct
before the call, rather than re-using a global single
struct each time),
it would be lovely and elegant to say:
*/
void main(string[] arg) {
/* Elegant:
auto r = myfunc() with { z= 2; x = -123; y = 200; }
*/
// and have it lowered to:
myfunc tmp;
with(tmp) { z= 2; x = -123; y = 200; }
auto r = tmp();
}
import std.stdio;
struct myfunc
{
// named keyword or named parameters
// --the call arguments and their defaults
int x=0;
int y=0;
int z=0;
// opCall is sweet... improves upon previous example
string opCall(string required_positional_arg = "default pos
arg value") {
writefln("%s: X %s, Y %s, Z %s", required_positional_arg,
x, y, z );
return "yo";
}
}