2012-11-14 43 views
5

是否可以根据运行时可用的信息将变量转换为另一种类型?动态投射在Haxe

如果我有:

interface Foo 
{ 
} 

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

我想要做这样的事(法被简化为清楚起见):

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

我得到以下编译器错误:

Unexpected) 

回答

6

我在official haxe documentation找到了答案。这里是:

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; 
}