|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.ide digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript electronics |
digitalmars.D.bugs - [Issue 2006] New: Appending empty array using ~= doesn't work
http://d.puremagic.com/issues/show_bug.cgi?id=2006 Summary: Appending empty array using ~= doesn't work Product: D Version: 2.012 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: bartosz relisoft.com I have an empty array of arrays of string aas. I append to it an empty array of string. The result should be an array aas of length one. string [][] aas = []; aas ~= cast (string []) []; writefln ("%d", aas.length); aas = aas ~ cast (string []) []; writefln ("%d", aas.length); It works correctly when using assignment and concatenation, but id doesn't when using the combined operator ~=. In the latter case, the length of array remains zero. -- Apr 18 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2006 ------- Comment #1 from wbaxter gmail.com 2008-04-18 14:46 ------- That's funny I was just about to file this one myself a couple of days ago, BUT then I decided that it probably isn't really a bug. [] could be an empty array of any type. So the compiler is interpreting it as an empty string[][], not an empty string[]. You have a T[], you concat an empty T[], your original array isn't supposed to change. I will agree it's not the most useful of behaviors, and the doc could certainly be clearer about what will happen in such a case, but I don't think its actually a bug. It's just the compiler interpreting [] in a not-so-useful manner. If you type a literal "~= []" in the code then clearly you want something to happen. The workaround is to use "~= [[]]" instead. -- Apr 18 2008
|