digitalmars.D.learn - why is this an invalid code?
- thanate (21/21) Oct 30 2010 Hi,
- Jonathan M Davis (7/34) Oct 30 2010 Easy. s is an associate array, not an array, and for whatever reason,
- thanate (2/2) Oct 30 2010 This does seem like a strange omission. But thanks for the answer!
- bearophile (4/5) Oct 30 2010 Indeed, some methods are missing in the built-in associative arrays. I t...
Hi, dmd v2.050 give the following error: hello.d(10): Error: undefined identifier module hello.dup for the following code (hello.d): --------------------- import std.stdio; import std.array; import std.string; void main() { uint[string] s; s["a"]=1; s["b"]=2; uint[string] r = s.dup; r["b"]=3; writeln(r["b"]," ",s["b"]); } --------------------- Could anyone explain why should this be an error? Thanks! thanate
Oct 30 2010
On Saturday 30 October 2010 12:12:48 thanate wrote:Hi, dmd v2.050 give the following error: hello.d(10): Error: undefined identifier module hello.dup for the following code (hello.d): --------------------- import std.stdio; import std.array; import std.string; void main() { uint[string] s; s["a"]=1; s["b"]=2; uint[string] r = s.dup; r["b"]=3; writeln(r["b"]," ",s["b"]); } --------------------- Could anyone explain why should this be an error? Thanks! thanateEasy. s is an associate array, not an array, and for whatever reason, associative arrays don't have a dup property: http://www.digitalmars.com/d/2.0/hash-map.html I believe that if you want a deep copy, you're going to have to create a new one and then copy all of the elements over in a loop. - Jonathan M Davis
Oct 30 2010
This does seem like a strange omission. But thanks for the answer! thanate
Oct 30 2010
thanate:This does seem like a strange omission. But thanks for the answer!Indeed, some methods are missing in the built-in associative arrays. I think Andrei likes the idea of adding few more methods (dup too) to those AAs, but no one has found the time to implement them yet. Bye, bearophile
Oct 30 2010