使用Dart语言的实验性扩展方法时的类型推断

问题描述 投票:0回答:1

当我让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)”。我想了解为什么我在提交问题之前犯了一个错误。

dart types extension-methods type-inference
1个回答
0
投票

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.