当我让Dart分析以下示例时...
extension MyList<T> on List<T> {
List<T> mapToList<T>(T Function(T) convert) => this.map<T>(convert).toList();
}
... dartanalyzer报告转换时发生类型错误,声称“参数类型'T Function(T)'无法分配给参数类型'T Function(T)'。dart(argument_type_not_assignable)”。我想了解为什么我在提交问题之前犯了一个错误。
map方法定义为Iterable<T> map<T>(T f(E e)) => MappedIterable<E, T>(this, f);
其中E是列表的类型,可以与列表的类型不同。因此,您必须做的是:
extension MyList<E> on List<E> {
List<T> mapToList<T>(T convert(E e)) => this.map<T>(convert).toList();
}