On Sunday, 3 December 2017 at 05:49:54 UTC, Fra Mecca wrote:
I have this code:
    Configuration conf = void ;
    try {
        conf = parse_config("config.sdl");
    } catch (Exception e) {
std.stdio.stderr.writeln("Error reading configuration file: ", e.msg);
        exit(1);
    }

// other code
function(value, conf);
// end

I get:
source/app.d(18,3): Error: cannot modify struct conf Configuration with immutable members

Is there a way to declare conf outside of the try catch block and use it later?
I thought void explicitly avoid inizialization.

In this case i'd go for a typed pointer, e.g

---
immutable struct Configuration
{
    this(string){/*load some file...*/}
    int value;
}

Configuration* config;

void main()
{
    try config = new Configuration("config.sdl");
    catch(Exception){}
    // config.value = 42; // ok, read only
}
---

Reply via email to