A switch/case too far...

Unknown W. Brackets unknown at simplemachines.org
Tue May 20 21:59:08 PDT 2008


The simple solution to that would be:

case is thisObj:
case is thatObj:

Makes sense and confuses no one, imho...

-[Unknown]


Koroskin Denis wrote:
> On Tue, 20 May 2008 15:06:38 +0400, Mike James <deepc at fishing.net> wrote:
> 
>> I was looking thru some DWT examples and there is plenty of code like 
>> this...
>>
>> if (myObj is thisObj)
>>     // do something
>> else if (myObj is thatObj)
>>     // do something else
>> else ...
>>
>> It occured to me how much neater it would be if the there was a 
>> switch/case construct that could deal with it..
>>
>> switch (myObj) {
>>     case thisObj:
>>         // do something
>>         break;
>>     case thatObj:
>>         // do something else
>>         break;
>>     default:
>>         // do nothing
>> }
>>
>> I'm not sure how much compiler 'magic' would be required :-)
> 
> There is a pitfall:
> should the compiler check for logical equality (opEqual) or instance 
> equality (is)?
> "myObj is thisObj" is definately not the same as "myObj == thisObj", but 
> how do you choose?
> 
> And what about possible side effects? a.opEquals(b) can give different 
> result each time being called, and therefor cannot be used in a switch 
> statement unless it's marked as pure, which is to be implemented, I hope :)



More information about the Digitalmars-d mailing list