动态演员在Haxe

loo*_*awa 5 dynamic-cast haxe

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

如果我有:

interface Foo
{
}

class Bar implements Foo
{
    public function new()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情(方法是为了清晰简化):

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

我得到以下编译器错误:

Unexpected )
Run Code Online (Sandbox Code Playgroud)

loo*_*awa 6

我在官方haxe文档中找到了答案.这里是:

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;
}
Run Code Online (Sandbox Code Playgroud)