On Wednesday, 22 February 2012 at 20:59:15 UTC, Jonathan M Davis wrote:
speed [...] is really its whole point of existance. I don't know why else you'd ever use appender.
[...]
- Jonathan M Davis

A use case is to give identity to a built-in array.

Consider this:

     class MyClass {
         private MyData[] theData;

         public @property MyData[] data() {
             return theData;
         }
         ...
     }


     MyClass m = new MyClass();
     m.data ~= new MyData();
     //Nothing got appended:
     assert(m.data.length == 0);

For the 95% of the use cases, that is the desired
behaviour. You don't want anyone appending to
your private array. If you wanted to, you would
have defined MyClass.append(myData).

  But there are a few cases where you want to
give identity to the array, and let anyone who
has a "handle" to it, to be able to append it.
(another case is while porting code from languages
that don't represent arrays as ranges, and return
them as getters).

--jm




Reply via email to