boolean over multiple variables

Simen kjaeraas simen.kjaras at gmail.com
Mon Jan 25 01:28:56 PST 2010


On Mon, 25 Jan 2010 09:59:42 +0100, Pelle Månsson  
<pelle.mansson at gmail.com> wrote:

> On 01/23/2010 12:29 AM, strtr wrote:
>> Simen kjaeraas Wrote:
>>
>>>
>>> Not tested, but they should work:
>>>
>>> if ( anySame( var, a, b, c, d ) ) {
>>> }
>>>
>>> if ( allSame( var, a, b, c, d ) ) {
>>> }
>>>
>>
>> A lot prettier.
>> I thought there would be a generic (basic) solution to this which I  
>> just didn't know about but maybe I actually do know the basics by now :)
>>> --
>>> Simen
>>
> If we get opIn_r for arrays, you can do
>
> if (var in [a, b, c, d]) {
> }
>
> Which I find a lot prettier.

Is this good enough?

struct CheckIf( T ) {
   T payload;
   bool opIn( T[] rhs ) {
     foreach ( e; rhs ) {
       if ( e == payload ) {
         return true;
       }
     }
     return false;
   }
}

CheckIf!( T ) checkIf( T )( T rhs ) {
   return CheckIf!( T )( rhs );
}

if ( checkIf( true ) in [ false, true, false ] ) {
}

-- 
Simen


More information about the Digitalmars-d-learn mailing list