我遇到了Haxe问题,这对我来说真的很奇怪..这是一个错误吗?
使用将泛型类型的函数作为参数的方法创建泛型类时,我会得到奇怪的错误
无效 - > Void应该是(Void) - >空隙
当泛型类型为Void
时如果泛型类型是Int,它可以正常工作。
有没有人有任何想法可以修复或解决这个问题?
class Test {
static var test2:Test2<Void> = new Test2<Void>();
static public function main() {
test2.test(passedFunc);
}
static function passedFunc():Void {
trace("passedFunc");
}
}
class Test2<T> {
public function new():Void {}
public function test(func: T->Void) {
trace("Test2.testFunc(T)");
}
}
答案 0 :(得分:0)
我不确定这是一个错误,它可能与Type系统在Haxe中的工作方式有关。在任何情况下,您可以使用的一种解决方法是简单地使用一个函数,其中参数显式为Void->Void
,并在必要时在类的其他函数中使用参数化类型T
。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以将类型推断欺骗到几乎忽略缺少的参数,如下所示:
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)");
}
}