Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
January 30, 2007 Associative Array Bug? | ||||
---|---|---|---|---|
| ||||
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é |
January 30, 2007 Re: Associative Array Bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to jicman | It is a feature: http://www.digitalmars.com/d/lex.html From section "String Literals": The following are all equivalent: "ab" "c" r"ab" r"c" r"a" "bc" "a" ~ "b" ~ "c" \x61"bc" |
January 30, 2007 Re: Associative Array Bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to jicman | 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? |
January 30, 2007 Re: Associative Array Bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ary Manzana | Reply to Ary,
> 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?
>
That comes from C which does this (most likely to make up for the lack of ~) and make things like this easy
"Error in file: "__FILE__"\n"
or for a more D like case
writef(\r\n);
|
January 30, 2007 Re: Associative Array Bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ary Manzana | Ary Manzana wrote:
> "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?
Maybe syntax highlighting might help catch these. Otherwise strings in D are very handy since you don't have to mess with too many "s and 's.
|
Copyright © 1999-2021 by the D Language Foundation