May 08, 2008
BCS Wrote:

> The point is that offtent a failed cast is not an indecation of an error. For instance code like this
> 
> class A {}
> class B1 : A {}
> class B2 : A {}
> 
> void foo(A a)
> {
>    if(auto b = cast(B1)a) {}
>    else if(auto b = cast(B2)a) {}
>    else {}
> }

I see polimorphism should help here.
May 08, 2008
Reply to terranium,

> BCS Wrote:
> 
>> The point is that offtent a failed cast is not an indecation of an
>> error. For instance code like this
>> 
>> class A {}
>> class B1 : A {}
>> class B2 : A {}
>> void foo(A a)
>> {
>> if(auto b = cast(B1)a) {}
>> else if(auto b = cast(B2)a) {}
>> else {}
>> }
> I see polimorphism should help here.
> 

dosn't always work

module third.party.lib;
class A {}

module my.lib.one
class B1 : A { int newFn(){...}}

module my.lib.teo
class B2 : A { char somthingNew(char[] c){...}}

void foo(A a)
{
 if(auto b = cast(B1)a)
   b.newFn();
 else if(auto b = cast(B2)a)
   b.somthingNew("hello");
 else
   throw new Error("a isn't a B1 or B2");
}