I was looking at the d-idioms website today and saw this code example:

http://p0nce.github.io/d-idioms/#Adding-or-removing-an-element-from-arrays

And I was kind of irked. I just recently working with removing an element from an array in a small project I worked on two weeks ago, and I had to learn the hard way that to properly remove an element from an array in the way this example describes, you have to do array.length--; as well.

This code:

import std.stdio, std.algorithm;

void main() {
  int[] arr;  //ensuring it's dynamic
  arr ~= 1;
  arr ~= 5;
  arr ~= 10;
  arr.remove(1);
  writeln(arr);
  writeln(arr == [1, 10]);
  arr.length--;
  writeln(arr);
  writeln(arr == [1, 10]);
}

produces this output:

[1, 10, 10]
false
[1, 10]
true

Compiled and ran on Windows, dmd v2.067.0. Unless I'm totally missing something here, that website is giving some pretty wrong information... Was the behavior of the remove() function changed recently? Thanks guys.

Reply via email to