digitalmars.D.learn - Associative Array Bug?
- jicman <cabrera_ _wrc.xerox.com> Jan 29 2007
- "Frank Benoit (keinfarbton)" <benoit tionex.removethispart.de> Jan 29 2007
- Ary Manzana <ary esperanto.org.ar> Jan 29 2007
- BCS <ao pathlink.com> Jan 29 2007
- =?UTF-8?B?SmFyaS1NYXR0aSBNw6RrZWzDpA==?= <jmjmak utu.fi.invalid> Jan 30 2007
- Lionello Lunesu <lio lunesu.remove.com> Jan 30 2007
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









"Frank Benoit (keinfarbton)" <benoit tionex.removethispart.de> 