【问题标题】:Haxe error with generic function具有通用功能的 Haxe 错误
【发布时间】:2016-07-29 16:12:25
【问题描述】:

我正在尝试使用泛型参数创建一个函数,但在实例化该函数时出现错误。

class Util {
    @:generic
    public static inline function max<T>( a:T, b:T ) : T {
        return a > b ? a : b;
    }
}

在不设置类型的情况下调用max

var mean:Float = 0;
mean = Util.max( 0.01, mean );

我收到了错误:

Cannot compare max.T and max.T
Missing return max.T

如果我改为设置浮点类型:

var mean:Float = 0;
mean = Util.max<Float>( 0.01, mean );

我得到错误:

Unexpected ,

我做错了什么?

【问题讨论】:

    标签: generics haxe


    【解决方案1】:

    类型T 可能没有&gt; 运算符。也许您可以使用类型约束,例如:

    class Util {
        @:generic
        public static inline function max<T:Float>(a:T, b:T):T {
            return a > b ? a : b;
        }
    }
    

    然后这样的用法应该可以工作:

    var intMax:Int = Util.max(1, 10);
    var floatMax:Float = Util.max(1.0, 10.0);
    

    【讨论】:

    • 谢谢,我可能期待一个 C++ 模板,当您使用/实例化模板时,它会检查 &gt; operator 的存在。
    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多