On Tuesday, 21 March 2017 at 08:08:24 UTC, ANtlord wrote:
Hello! I read documentation about memory management and can't find description about delay allocation of instance. I have a method marked by @nogc. This method takes boolean variable. If this variable is true I want to construct object with one set of parameters else I want to construct object with another set of parameters. Take a look at code for clearance.

void method(bool flag) @nogc
{
        scope MyClass obj;
        if(flag) {
                obj = new MyClass(1);
        } else {
                obj = new MyClass(2);
        }
        // using obj
}

But this code CAN'T be compiled. How should I declare object for delay construction.
Thanks.

Try scope obj = new MyClass(flag ? 1 : 2);

In essence you should never need to delay construction.
Just construct the object as soon as you have everything to construct it.
which includes conditions.

Reply via email to