Array literals
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Oct 16 06:40:23 PDT 2008
Steven Schveighoffer wrote:
> "bearophile" wrote
>> By default arrays/strings in D1 are static:
>>
>> import std.stdio: writefln;
>> void main() {
>> auto a = ["Hello", "what"];
>> writefln(a[2].length); // 5
>> }
>>
>> To remove a significant amount of bugs from my code, like that one (the
>> second string is a static array of length 5) I suggest to "invert" the
>> meaning of array literals: by default they define dynamic arrays/strings
>> allocated on the heap (immutable too, if necessary). So a different and
>> explicit syntax can be used/invented to denote static arrays.
>
> I think this can be solved even simpler. Make string literal type be
> invariant(char)[] instead of static array. It does not need to be on the
> heap. That would solve lots of IFTI problems too.
Yah Walter does plan to make "string literals" dynamically-sized by
default, but fixed-sized on demand (if you specify the appropriate
receiver type, which in turn asks the T[auto] question). In related
news, he wants to legitimize statically-typed arrays by making them true
value types.
Andrei
More information about the Digitalmars-d
mailing list