On 13.06.2011 16:03, Lloyd Dupont wrote:
I'm trying to create 2 extra method for arrays ("range" would be better, though I don't quite understand what is a "range")
Although I have some indecipherable (to me) compiler error...

What's wrong with the code below?
==================
import std.algorithm;

public:

void remove(T)(ref T[] array, T element)
{
   auto index = array.countUntil!("a == b", T[], T)(array, element);
   removeAt(index);
}

void removeAt(T)(ref T[] array, sizediff_t index)
{
   if(index < 0 || index >= array.length)
       return;
   array.replaceInPlace(index, index + 1, []);
}


unittest
{
   auto a = [1, 3, 4];
   a.remove(3);
   assert(a == [1, 4]);
}
======================

It's not exactly clear what's your problem, since you haven't put a tiniest description of what the compiler outputs.
still:
array.countUntil!("a == b", T[], T)(array, element);
should be ether
countUntil!("a == b", T[], T)(array, element);
or:
array.countUntil!("a == b", T[], T)( element);

also drop thouse ugly explicit template params (the compiler can and would figure them out anyway): array.countUntil!"a == b"(element); //same as default array.countUntil(element);

another one:
removeAt(index);
should be array.removeAt(index) or removeAt(array, index);

And last but not least there is remove in Phobos, it's just link to it from summary table is constantly getting screwed up.

--
Dmitry Olshansky

Reply via email to