On 5/2/16 5:57 PM, Eto Demerzel wrote:

For example:

     auto invalid_tokens = uninitializedArray!(string[])(result.failure);
     invalid_tokens.length = 0;

     foreach (index, ref token_result; result.results) {
         if (token_result.error == "NotRegistered") {
             invalid_tokens.assumeSafeAppend() ~= tokens[index];
         }
         else ...
     }

     // use invalid_tokens

It would've been almost perfect code if `assumeSafeAppend` wasn't very
costly. Now I need to declare separate length for `invalid_tokens`, so I
can assign tokens by index. Which I don't like because arrays have
`length` built into them.

Only call assumeSafeAppend when you *remove* data from the array end. When you call it on an array that is already appendable, it does nothing. Appendable means the array slice ends at the end of the actual data.

Better code:

invalid_tokens.length = 0;
invalid_tokens.assumeSafeAppend;

Without seeing your "else", I can't say where else it should be, if at all.

-Steve

Reply via email to