泛型函数的Haxe错误

Zhen

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

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 ,

我做错了什么?

山姆·特威代尔

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章