On Thursday, 26 January 2017 at 00:02:03 UTC, Profile Anaysis wrote:
auto t1 = T1(a,b,new X(c1,c2,c3));
auto t2 = T2(e);
auto t3 = T3(f,g,c);

and then f(t1,t2,t3);

or other wise simply inline the above.


This also cuts down on constructor overloading.

This is sort of liked named parameters but the idea is that the compiler simply constructs the type internally as it knows what type to expect and the grouping symbols allow one to specify the contents unambiguously.
You can init structs, and classes inside the function call. Ex:
import std.stdio;

struct T1 {
    int a;
    int b;
    int c;
}

struct T2 {
    int b;
    string a;
    T1 t;
}

class T3 {
    int z;
    int m;

    this(int z, int m) {
        this.z = z;
        this.m = m;
    }
}

void foo(T1, T2, T3) {

}
void main() {

    foo(
        T1(1, 2, 3), // arguments are passed as rvalues to func.
        T2(2, "tested",T1(1, 2, 3)), // compound struct
        new T3(10, 20)
    );
}

If new is not desired to be in your code, it's possible to use opCall overload to mimic structs initialization, for classes.

Alexandru.

Reply via email to