Ranges

Yigal Chripun yigal100 at gmail.com
Fri Jun 19 02:30:00 PDT 2009


Kristian Kilpi wrote:
> On Fri, 19 Jun 2009 03:13:11 +0300, Derek Parnell <derek at psych.ward> wrote:
>> Steve Teale (steve.teale at britseyeview.com) wrote:
>> Now I admit that these are not method names I would have choosen, as I
>> would have preferred names more like ... isEmpty(), getFront(),
>> moveForwards(), getBack(), moveBackwards(), getElement(N), addElement(E),
>> but the bikeshed gods have more wisdom than me ... and not that I'm
>> complaining of course.
> 
> I agree. Well, even if the names of the Range methods are a bit 'odd' 
> for me, I guess they are ok... except for empty().
> 
> If I have a container that I wan't to use as a Range, I can't use 
> empty() to empty the container (i.e. remove all the elements from it). :(
> 
> And yes, *I* am complaining here. ;)
> 
> I'm accustomed to use isXyz() for checking something and xyz() for doing 
> something (e.g. isEmpty() + empty()). What function name should I use 
> for emptying the container then? removeAllElements(), makeEmpty(), or 
> maybe even emptyThisContainer()...? :P
> 
> Hmm, should the Range methods use some special naming convention? E.g. 
> rangeFront(), rangePopFront()...?

while I agree with the general point about the naming convention, I 
don't see how is this a problem here since a range should be a distinct 
type from the container.
that means that you have for instance:
class Tree {
   void empty();
   ...
   TreeRange preOrder();
   TreeRange inOrder();
   TreeRange postOrder();
}

struct TreeRange {
   bool empty();
   ...
}

tree.empty(); // will empty the tree
auto range = tree.inOrder();
...
while (!range.empty()) { // will check if the range is empty
    // do stuff
}

this might be confusing but not impossible.



More information about the Digitalmars-d mailing list