Adding a method to an enum.
    Ali Çehreli 
    acehreli at yahoo.com
       
    Sun Jun 19 21:54:49 PDT 2011
    
    
  
On Mon, 20 Jun 2011 02:48:30 +0000, Charles McAnany wrote:
> Hi, all. I'm looking for a way to make constants that have methods
> without a lot of overhead. In particular, a way to define a Direction
> and then be able to rotate it right. Here's kind of what I have in mind:
> 
> enum Direction{
> left, right, up, down;
> 
> public Direction rotateRight(){
>  switch(this){
>  case left:
>    return up;
>  case up:
>    return right;
>  case right:
>    return down;
>  case down:
>    return left;
>  }
> }
It may be acceptable to change a Direction variable freely in a different 
context. So I think that the requirement on how a Direction variable 
change should not be on the Direction type itself.
How about a Dial that has a Direction:
struct Dial
{
    Direction direction_;
    void rotateRight(int count = 1)
    {
        direction_ += count;
        direction_ %= Direction.sizeof;
    }
    void rotateLeft(int count = 1)
    {
        rotateRight(-count);
    }
    @property Direction direction() const
    {
        return direction_;
    }
}
Ali
    
    
More information about the Digitalmars-d-learn
mailing list