in-parameter
    Pillsy 
    pillsbury at gmail.com
       
    Mon Nov  8 08:43:20 PST 2010
    
    
  
Jonathan M Davis Wrote:
[...]
> So, if you alter the elements of that array, it alters the elements of 
> the array that was passed in. However, if you alter the arrays size, 
> causing it to have to re-allocate memory, then that array is going to 
> be pointing to a different block  of memory, and it will no longer 
> affect the original array.
This behavior, IMO, is a real misfeature. The length property of an array shouldn't be directly mutable, and you shouldn't be able to append onto the end of a dynamic array, because it can cause some surprising behavior and adds a lot of cruft to the interface in the form of, well, most of std.array. The ability to use an an array as a replacement for an ArrayList or std::vector clashes badly with the ability to use arrays as lightweight slices.
Since lightweight slices are such a win[1], and people coming from any of Java/C#/C++ will be used to using a library class if they need a flexible array to use as a list, I think separating the two concepts and moving the flexible array into a library would be a notable improvement to the language. Sure, it may surprise Pythonistas, but they'll have a lot to learn anyway, given how much lower level and more static D is as a language. 
[1] From a "marketing" perspective, they're also great way to show off how using a GCed language can actually improve performance and memory use.
Cheers,
Pillsy
    
    
More information about the Digitalmars-d
mailing list