[Issue 3971] New: Syntax & semantics for array assigns
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Mar 15 14:55:50 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3971
Summary: Syntax & semantics for array assigns
Product: D
Version: 2.041
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: bearophile_hugs at eml.cc
--- Comment #0 from bearophile_hugs at eml.cc 2010-03-15 14:55:47 PDT ---
This is written in the page about arrays:
http://www.digitalmars.com/d/2.0/arrays.html
s[] = t; // the 3 elements of t[3] are copied into s[3]
s[] = t[]; // the 3 elements of t[3] are copied into s[3]
s[] = 3; // same as s[0] = 3, s[1] = 3, s[2] = 3
p[0..2] = 3; // same as p[0] = 3, p[1] = 3
It's not good to have two different syntaxes to do the same thing, or two
similar syntaxes with a different computational complexity.
So I suggest to modify the array assign syntax this way:
a[] = b[]; static dynamic
static OK1 OK1
dynamic OK1 OK1
a = b[]; static dynamic
static Err Err
dynamic Err Err
a[] = b; static dynamic
static Err Err
dynamic Err Err
a = b; static dynamic
static Err2 Err
dynamic Err OK2
int i; a=i; static dynamic
Err Err
int i;
a[] = i; static dynamic
OK3 OK3
Key:
Err = Syntax error
OK1 = Copies all items from an array to the oter.
OK2 = Copies just the stuct of the dynamic array, array body not copied.
OK3 = Copies the value to all the items of the array.
Err2 = Syntax error, becase there is no reference to copy, better to keep
tidy the language.
You can see that this too is disallowed:
int a, b;
a = b;
This breaks generic code, but it's not good when the same syntax can be O(1)
(because the same syntax used on dynamic arrays is a O(1)) or O(n), and the too
is different.
If you have comments please add them.
I like that matrix because it contains all cases, so it's easy to see and
design the situation, even if you don't agree with its contents.
The accepted final version of that matrix can even be added back to the arrays
page.
--
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