boolean over multiple variables

Pelle Månsson pelle.mansson at gmail.com
Mon Jan 25 07:35:12 PST 2010


On 01/25/2010 10:28 AM, Simen kjaeraas wrote:
> 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 ] ) {
> }
>
Interesting solution! Very clever!

I still think opIn_r should be defined for arrays, though. :)


More information about the Digitalmars-d-learn mailing list