泛型函数 Haxe 错误

Zhe*_*hen 2 generics haxe

我正在尝试创建一个具有通用参数的函数,但在实例化该函数时出现错误。

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

max不设置类型调用:

var mean:Float = 0;
mean = Util.max( 0.01, mean );
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Cannot compare max.T and max.T
Missing return max.T
Run Code Online (Sandbox Code Playgroud)

如果我设置 Float 类型:

var mean:Float = 0;
mean = Util.max<Float>( 0.01, mean );
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Unexpected ,
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Sam*_*ale 5

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

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

然后这样的用法应该有效:

var intMax:Int = Util.max(1, 10);
var floatMax:Float = Util.max(1.0, 10.0);
Run Code Online (Sandbox Code Playgroud)