[英]“Missing parameter type” in overloaded generic method taking a function argument
[英]Generics class method taking function parameter of the generic type doesn't work with Void
我遇到了一个Haxe问题,对我来说似乎真的很奇怪。这是一个错误吗?
当使用以泛型类型的函数作为参数的方法创建泛型类时,出现奇怪的错误
虚空->虚空应该是(虚空)->虚空
当泛型类型为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)");
}
}
我不确定这是一个错误,它可能与Type系统在Haxe中的工作方式有关。 无论如何,您可以使用的一种解决方法是简单地使用一个函数,其中参数的类型明确为Void->Void
并在必要时在类的其他函数中使用参数化的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)");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.