Может ли кто-нибудь создать / добавить простой метод «индексация по карте» в List на Flutter? - PullRequest
0 голосов
/ 06 января 2020

Основываясь на некоторых ответах по переполнению стека, я попытался создать «расширение» List для mapIndexed, то есть функцию карты, которая также передает индекс. Вот что я получил:

mixin MapIndexed on List {

  Iterable<U> mapIndexed<T, U>(U Function(T e, int i) f) {
    int i = 0;
    return map<U>((it) { final t = i; i++; return f(it, t); });
  }

}

Проблема в том, что я не знаю, как это назвать. Я создал это на основе концепции расширения iOS Swift. В конце концов, я просто хочу, чтобы я мог позвонить result = myList.mapIndexed((element, index) => doMapping);. Как я могу сделать это правильно? То, как это сейчас, самое близкое, что я могу сделать для достижения этой цели, это функция:

Iterable<U> mapIndexed<T, U>(List<T> list, U Function(T e, int i) f) {
  int i = 0;
  return list.map<U>((it) { final t = i; i++; return f(it, t); });
}

result = mapIndexed(list, (element, index) => doMapping);

1 Ответ

2 голосов
/ 06 января 2020

попробуйте следующее:

extension MapIndexed on Iterable {
    Iterable<U> mapIndexed<T, U>(U Function(T e, int i) f) {
    int i = 0;
    return map<U>((it) { final t = i; i++; return f(it, t); });
  }
}

с этим вы можете проверить это:

print([1,3,5].mapIndexed((value, index) => index * 10 + value));

вы должны увидеть результат:

(1, 13, 25)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...