Associative Array Bug?

Ary Manzana ary at esperanto.org.ar
Mon Jan 29 17:03:46 PST 2007


jicman escribió:
> I have this program,
> 
> import std.stdio;
> void main()
> {
>   char[][] t;
>   t = [
>         "ProjID",
>         "id",
>         "parent",
>         "children",
>         "login",
>         "cust",
>         "proj",
>         "class",
>         "bdate",
>         "ddate",
>         "edate",
>         "pm",
>         "lang",
>         "vendor",
>         "invoice",
>         "ProjFund",
>         "A_No",
>         "notes",
>         "status"
>           "should give error"
>       ];
>   foreach (char[] s; t)
>     writefln(s);
>   writefln(t.length);
> }
> 
> and it compiles and runs.  However, I forgot a comma after a status and so the
> last two strings get concatenated by the program. ie.
> 
> 19:46:18.54>testarr
> ProjID
> id
> parent
> children
> login
> cust
> proj
> class
> bdate
> ddate
> edate
> pm
> lang
> vendor
> invoice
> ProjFund
> A_No
> notes
> statusshould give error
> 19
> 
> Is this the correct behaviour?  Should not the compiler protest about a
> missing comma or a lack of ~?
> 
> back to D'ing...
> 
> thanks.
> 
> jos�

That is the correct behaviour. Check this:

http://digitalmars.com/d/lex.html#StringLiteral

"Adjacent strings are concatenated with the ~ operator, or by simple 
juxtaposition."

Although now it seems to me that this "feature" is kind of buggy... 
isn't it?


More information about the Digitalmars-d-learn mailing list