haxe - 自定义转换函数和摘要

标签 haxe

此代码输出 Null<_Test.Bar_Impl_> .我想让它输出 Foo但我明白为什么它不能那样工作。但也许我能以某种方式克服这个限制。 我的主要目标是创建类似于 cast 的函数,但返回 null 而不是抛出异常。它应该与摘要一起使用。

class Foo {
}

abstract Bar(Foo) {
}

class MyCast {
    inline static public function doCast<T>(value: Any, type: Class<T>): Null<T> {
        return Std.is(value, type) ? cast value : null;
    }
}

class Test {

    static function main() {
        $type(MyCast.doCast(null, Bar));
    }
}

最佳答案

实际上这样根本行不通,因为 Std.is(value, AbstractType) 总是会失败,因为抽象在运行时不再存在。

参见 https://try.haxe.org/#1Afb5 ,尤其是:

关于haxe - 自定义转换函数和摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48710430/

相关文章:

haxe - Haxe 中有某种退出语句吗?

haxe - hax 中的前向运算符

javascript - 是否可以让 Angularjs 使用原型(prototype)方法和变量

macros - haxe:从haxe.macro.Position获取行号和行位置

arrays - 如何将一组 Expr(表达式)传递给 Haxe 宏?

installation - haxelib 与 haxe 一起安装在自定义目录中

c++ - 如何使用来自 Haxe 的第三方 dll

sockets - 所有平台上的 Haxe 服务器-客户端交换

c++ - 什么是 cppia 脚本?

haxe - Haxe 中的动态转换