我正在尝试使用泛型参数创建一个函数,但是在实例化函数时出现错误。
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 ,
我做错了什么?
答案 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);