Haxe错误与泛型函数

时间:2016-07-29 16:12:26

标签: generics haxe

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

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

如果我改为设置Float类型:

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

我收到了错误:

Unexpected ,

我做错了什么?

1 个答案:

答案 0 :(得分:4)

类型T可能没有>运算符。也许您可以使用类型约束:

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