2012-11-14 16 views
5

Czy można rzutować zmienną na inny typ na podstawie informacji dostępnych w środowisku wykonawczym?Dynamiczna obsada w systemie Haxe

Jeśli mam:

interface Foo 
{ 
} 

class Bar implements Foo 
{ 
    public function new() 
    { 
    } 
} 

chcę zrobić coś takiego (metoda uproszczona dla jasności):

public static function dynamicCast<T : Foo>(target : Foo, cls : Class<T>) : T 
{ 
    var ret : T = cast(pTarget, cls); 
    return ret; 
} 

pojawia się następujący błąd kompilatora:

Unexpected) 

Odpowiedz

6

Znalazłem odpowiedź w official haxe documentation. Oto ona:

public static function dynamicCast<T : Foo>(target : Foo, cls : Class<T>) : T 
{ 
    if(Std.is(target, cls)) 
    { 
     var ret : T = cast target; 
     return ret; 
    } 
    return null; 
}