Generics 获取泛型类型的函数参数的泛型类方法不适用于Void

Generics 获取泛型类型的函数参数的泛型类方法不适用于Void,generics,haxe,Generics,Haxe,我遇到了一个对我来说很奇怪的问题。。是虫子吗 当使用将泛型类型的函数作为参数的方法创建泛型类时,我得到了一个奇怪的错误 作废->作废应为作废->作废 当泛型类型为Void时 如果泛型类型为Int,则可以正常工作 有人有什么想法来解决这个问题吗 我不确定这是否是一个bug,它可能只是与Haxe中类型系统的工作方式有关。在任何情况下,您都可以使用一种变通方法,即使用一个参数为显式类型Void->Void的函数,必要时在类的其他函数中使用参数化类型T。变通方法: static public funct

我遇到了一个对我来说很奇怪的问题。。是虫子吗

当使用将泛型类型的函数作为参数的方法创建泛型类时,我得到了一个奇怪的错误

作废->作废应为作废->作废

当泛型类型为Void时

如果泛型类型为Int,则可以正常工作

有人有什么想法来解决这个问题吗


我不确定这是否是一个bug,它可能只是与Haxe中类型系统的工作方式有关。在任何情况下,您都可以使用一种变通方法,即使用一个参数为显式类型Void->Void的函数,必要时在类的其他函数中使用参数化类型T。

变通方法:

static public function main() {
    test2.test(cast passedFunc);
}

.

您可以欺骗类型推断几乎忽略缺少的参数,如下所示:

class Test {
    static var test2 = new Test2();
    static public function main() {
        test2.test(passedFunc);
    }
    static function passedFunc(?unused):Void {
        trace("passedFunc");
    }
}    
class Test2<T> {
    public function new():Void {}
    public function test(func: T->Void) {
        trace("Test2.testFunc(T)");
    }
}
class Test {
    static var test2 = new Test2();
    static public function main() {
        test2.test(passedFunc);
    }
    static function passedFunc(?unused):Void {
        trace("passedFunc");
    }
}    
class Test2<T> {
    public function new():Void {}
    public function test(func: T->Void) {
        trace("Test2.testFunc(T)");
    }
}