[Issue 3813] Bad writeln of arrays
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jan 28 06:11:08 PST 2011
http://d.puremagic.com/issues/show_bug.cgi?id=3813
--- Comment #11 from Denis Derman <denis.spir at gmail.com> 2011-01-28 06:08:53 PST ---
More generally, why don't writeln / formatValue / whatever builtin funcs used
for output simply recurse to format elements of collections. This is how things
work in all languages I know that provide default output forms. And this
default is equal, or very similar, to literal notation).
Isn't this the only sensible choice? I think we agree default output format is
primarily for programmer's feedback.
Side-point: I would love default formats for composites thingies like struct &
class objects as well. Probably another enhancement request. Currently, the
code copied below writes out:
S
modulename.C
Great! very helpful ;-) I wish we would get, as default, an output similar to
the notation needed to create the objects:
S(1, 1.1, '1', "1.1", S.Sub(1))
C(1, 1.1, '1', "1.1", new C.Sub(1))
(Except for members with default values, possibly not provided in creation
code, but listed on output.)
At least we can write a toString... but it's a bit annaoying to be forced to do
it, esp for quickly written pieces of code, when a default would do the job
(prbably most cases by far).
Denis
Code:
struct S {
struct Sub {
int j;
this (int j) {
this.j = j;
}
}
int i;
float f;
char c;
string s;
Sub sub;
}
class C {
static class Sub {
int j;
this (int j) {
this.j = j;
}
}
int i;
float f;
char c;
string s;
Sub sub;
this (int i, float f, char c, string s, Sub sub) {
this.i = i;
this.f = f;
this.c = c;
this.s = s;
this.sub = sub;
}
}
unittest {
S s = S(1, 1.1, '1', "1.1", S.Sub(1));
writeln(s);
C c = new C(1, 1.1, '1', "1.1", new C.Sub(1));
writeln(c);
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list