Comparing Multiple Values

BCS ao at pathlink.com
Tue Mar 11 09:53:50 PDT 2008


Reply to Derek,

> On Tue, 11 Mar 2008 13:39:55 +0100, downs wrote:
> 
>> There's a better way actually.
>> 
> But that is only good for ranges ;-)
> 
> Not so good for ...
> 
> if value in set(2,4,7,10,23,445)
> 
> I'm pretty sure this will be simple to organize once AST macros are
> implemented.
> 

struct _Set(T) {
  T[] set;
  bool opIn_r(U)(U u) {
    foreach(v; set) if(v==u) return true;
    return false;
  }
}

struct Set {
  static _Set!(T) opIndex(T, U)(T[] a...) {
    _Set!(T) ret;
    ret.set = a.dup; //need the dup???
    return ret;
  }
}

I /think/ that will work. But I haven't tested it.

if(1 in Set[1,2,3,5,9,23])




More information about the Digitalmars-d-learn mailing list