Вывод типа при использовании экспериментальных методов расширения на языке дартс - PullRequest
0 голосов
/ 03 ноября 2019

Когда я позволю Дарту проанализировать следующий пример ...

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 (arguments_type_not_assignable) ". Я хотел бы понять, почему я сделал ошибку, прежде чем подавать проблему.

1 Ответ

2 голосов
/ 03 ноября 2019

Метод карты определяется как 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();
}
...