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