Search code examples
arraysddmd

D programming language char arrays


This may sound really stupid. but I've got a strange problem with the D programming language. When I try to create a new array like this:

import std.stdio;

void main()
{
    char[] variable = "value";
    writefln(variable);
}

The DMD compiler always gives me this error:

test.d(5): Error: cannot implicitly convert expression ("value") of type invariant(char[5u]) to char[]

Any idea why? I'm using the 2.014 alpha (available here) for Ubuntu.


Solution

  • I was searching around the arrays section of the guide, this may help:

    A string is an array of characters. String literals are just an easy way to write character arrays. String literals are immutable (read only).

    char[] str1 = "abc";                // error, "abc" is not mutable
    char[] str2 = "abc".dup;            // ok, make mutable copy
    invariant(char)[] str3 = "abc";     // ok
    invariant(char)[] str4 = str1;      // error, str4 is not mutable
    invariant(char)[] str5 = str1.idup; // ok, make invariant copy
    

    From here.