generics - 泛型函数 Haxe 错误

标签 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 ,

我做错了什么?

最佳答案

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

关于generics - 泛型函数 Haxe 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663246/

相关文章:

Scala 类型推断不适用于泛型案例类和 lambda

Java泛型类,可以使用工厂生成的自己的产品

java - 如何实现通用接口(interface)的方法?

java - 在 Haxe 中与 Java 函数交互

haxe - 使用 haxe 作为 c++ 和 JavaScript 之间的转译器

video - 打包应用后, Electron 视频播放会中断

arrays - Haxe 中的原始数组构建和访问

所有实现接口(interface)的对象的java列表

Java:通配符数组类型可以同时用作参数和返回类型吗?

Haxe - 打印命令行参数