dart - 在 Dart 语言中使用实验性扩展方法时的类型推断
问题描述
当我让 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();
}
推荐阅读
- ruby-on-rails - 为什么“唯一性:真实”验证在我的测试(Rails)中不起作用?
- amazon-web-services - 错误:InvalidProfileError - 尽管有配置文件,但无法找到配置文件(默认)
- javascript - Uncaught Invariant Violation:最小化 React 错误
- python - 用 json.dump 引发 JSONDecodeError("Extra data", s, end)
- docker - 将 env var 从 docker run cmd 在 jenkinsfile 中传递给 dockerfie
- jquery - 如果找到数据则显示警报 - JQUERY
- monitoring - 在 Glowroot 中无法看到我的 Vertx 应用程序的任何 Web 事务
- python - 如何为一种热编码实现生成器功能
- reactjs - React 中的 componentWillReceiveProps 问题
- r - 在 R 中创建交互式维恩图