小编k_R*_*ign的帖子

List.forEach 无法修改元素?

我正在尝试创建一个列表列表来模仿 Dart 中二维数组的功能,但我在弄清楚如何使其工作时遇到了麻烦。

我最初List.forEach是为了创建列表并填充它们而使用的,但是在每次循环之后,就好像我从未创建过列表一样。下面是代码的样子:

currentMap = new List<List<int>>(height);
currentMap.forEach((e) {
    e = new List<int>(width);
    e.forEach((f) {
        f = 1;
    });
});
Run Code Online (Sandbox Code Playgroud)

打印currentMap结果为null. 这是我现在所拥有的:

currentMap = new List<List<int>>(height);
for(int i = 0; i < height; i++) {
    currentMap[i] = new List<int>(width);
    for(int j = 0; j < width; j++) {
        currentMap[i][j] = 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

这完全符合我的预期。

我知道这可能是一个非常基本的问题,我假设forEach不允许您修改元素,但我想对此进行一些确认,并且 Dart API 文档没有指定除了短语“apples the function f”每个元素......”这对我来说可能不太清楚。

另外,我知道List.filled()构造函数之类的东西——这就是我开始构建其他功能的方式。

编辑:好的,我想我现在明白了。参数是“传递共享”,这意味着对对象的引用进行了复制。这意味着您可以修改参数指向的可变对象的成员(如下所示):

void function(MyObject o) {
    o.x = …
Run Code Online (Sandbox Code Playgroud)

arrays foreach dart

6
推荐指数
1
解决办法
4974
查看次数

标签 统计

arrays ×1

dart ×1

foreach ×1