我已经确认了两个长度相同的清单。我想同时操作它们。我的代码当前看起来像这样:
var a = [1, 2, 3];
var b = [4, 5, 6];
var c = [];
for(int i = 0; i < a.length; i++) {
c.add(new Foo(a, b));
}
Run Code Online (Sandbox Code Playgroud)
以这种方式计算列表A的长度似乎有些笨拙。有没有更好,更Dart-y的方式来完成此任务?
Csa*_*oth 22
Dart 团队提供了一个集合包,其中包含一个IterableZip类:
import 'package:collection/collection.dart';
final a = [1, 2, 3];
final b = [4, 5, 6];
List<Foo> c = [];
for (final pairs in IterableZip([a, b])) {
c.add(Foo(pairs[0], pairs[1]));
}
Run Code Online (Sandbox Code Playgroud)
更多注意事项:
package:collection/iterable_zip.dart已弃用,您只需要collection.dart像所示的那样导入。final a并且final b变量将具有推断的模板列表类型。我没有指定 的模板类型IterableZip,但在某些情况下(在我使用它的复杂情况下)您可能需要像 那样显式键入它IterableZip<int>,因此在循环中您可以更方便地访问成员。在这个简单的情况下,编译器/解释器可以轻松推断类型。现在我们已经有了 dart 中的列表推导式:
final c = [for(int i = 0; i<a.length; i+= 1) Foo(a[i], b[i])];
Run Code Online (Sandbox Code Playgroud)
看一下quiver包的zip功能。
您可以这样写:
var a = [1, 2, 3];
var b = [4, 5, 6];
var c = [];
for (var pair in zip([a, b])) {
c.add(new Foo(pair[0], pair[1]));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |