【问题标题】:Can anyone create/add a simple "map indexed" method on List on Flutter?任何人都可以在 Flutter 上的 List 上创建/添加一个简单的“地图索引”方法吗?
【发布时间】:2020-04-23 19:25:00
【问题描述】:

根据 Stack Overflow 上的一些答案,我尝试为 mapIndexed 创建一个 List 的“扩展”,即一个也传递 index.html 的 map 函数。这是我得到的:

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) =&gt; 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);

【问题讨论】:

  • 哦,好的,所以在 Flutter 上有 一个叫做 extension 的语法。让我检查一下。请发表您的评论作为答案,以便我接受。谢谢。

标签: list dictionary flutter


【解决方案1】:

尝试以下方法:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 2013-06-11
    • 1970-01-01
    • 2012-09-08
    • 2023-03-22
    • 2015-04-04
    • 2021-02-19
    • 1970-01-01
    相关资源
    最近更新 更多