例如,我有以下函数参数:
class MyClass {
U Function<T, U>(T data) callback;
MyClass ({ this.callback }) : super();
}
var int Function(String value) func = (String value) => int.parse(value);
MyClass(callback: func); // error
错误是:
无法将参数类型'int Function(String)'分配给参数类型'U Function <T,U>(T)'。
我该如何工作?
编辑:
根据Shubhamhackz的回答,我得出结论,我的代码唯一的错误是,因为泛型在变量上,而不在函数参数上,并且变量是在声明和实例化类时创建的。我应该将<T,U>放在类声明本身上,而不要放在函数变量声明上。因此,类声明变为:
class MyClass<T, U> {
U Function(T data) callback;
MyClass ({ this.callback }) : super();
}
声明通用函数参数并将其作为参数传递。这就是我在中实现它的方式dart
。
typedef Callback<T,U> = U Function(T data);
void main() {
Callback<String,int> func = (String value) {
return int.parse(value);
};
MyClass(callback: func);
}
class MyClass {
Callback<String,int> callback;
MyClass ({ this.callback }) : super() {
print('MyClass Called');
}
}
输出:
MyClass Called
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句