【问题标题】:Haxe @:generic causes compiler errors?Haxe @:generic 导致编译器错误?
【发布时间】:2020-05-15 14:18:52
【问题描述】:

下面我有一个非常精简的程序,它有一个泛型类,然后创建它的一个实例。编写代码时,出现编译时错误“MyGeneric> 应该是 MyGeneric_Int”。当我删除 @:generic 属性时,它可以编译并正常工作。我是否误解了@:generic 的使用?这里甚至需要吗?这是在 haxe 4.0.5

@:generic
class MyGeneric<T>
{
    public function new (fn:T)
    {
        trace(fn);
    }
}

class Repro
{
    static function main()
    {
        var tracer = getTracer();
    }

    public static function getTracer():MyGeneric<Any>
    {
        var arg:Any = 3;
        return getGeneric(arg);
    }

    @:generic
    public static function getGeneric<T>(T):MyGeneric<T>
    {
        return new MyGeneric(T);
    }
}

【问题讨论】:

    标签: generics attributes haxe


    【解决方案1】:

    您可以这样做:return cast getGeneric(arg);

    【讨论】:

    • 虽然这确实有效,但我首先成功地发出了 @:generic 注释。我正在寻找更多关于为什么会发生这种情况的说明,以及任何一种解决方案是否会产生后果。