digitalmars.D.learn - Associative Array Bug?
- jicman (59/59) Jan 29 2007 I have this program,
- Frank Benoit (keinfarbton) (9/9) Jan 29 2007 It is a feature:
- Ary Manzana (7/73) Jan 29 2007 That is the correct behaviour. Check this:
- BCS (6/16) Jan 29 2007 That comes from C which does this (most likely to make up for the lack o...
- =?UTF-8?B?SmFyaS1NYXR0aSBNw6RrZWzDpA==?= (3/8) Jan 30 2007 Maybe syntax highlighting might help catch these. Otherwise strings in D
- Lionello Lunesu (3/9) Jan 30 2007 That's a normal array, by the way, not an associative array.
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é
Jan 29 2007
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"
Jan 29 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?
Jan 29 2007
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);
Jan 29 2007
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.
Jan 30 2007
jicman wrote:I have this program, import std.stdio; void main() { char[][] t;That's a normal array, by the way, not an associative array. L.
Jan 30 2007