相关疑难解决方法(0)

在Dart中克隆列表,地图或集

从Java背景的:什么是推荐的方式来"克隆"一个飞镖List,MapSet

collections clone dart

33
推荐指数
8
解决办法
2万
查看次数

在像 Dart 这样的现代语言中,传递引用的真正含义是什么?

Futures在 Dart 中工作,我遇到了一个有趣的问题。

import 'dart:async';

class Egg {
  String style;
  Egg(this.style);
}

Future cookEggs(List<Egg> list) =>
  new Future(() =>
    ['omelette','over easy'].forEach((_) => list.add(new Egg(_)))
  );

Future cookOne(Egg egg) => new Future(() => egg = new Egg('scrambled'));

void main() {
  List<Egg> eggList = new List();
  Egg single;

  cookEggs(eggList).whenComplete(() => eggList.forEach((_) => print(_.style));
  cookOne(single).whenComplete(() => print(single.style));
}
Run Code Online (Sandbox Code Playgroud)

预期的输出是:

omelette
over easy
scrambled
Run Code Online (Sandbox Code Playgroud)

cookEggs使List<Eggs>工作正常的函数,但访问 的style属性single不成功并抛出一个NoSuchMethodError.

我首先认为这可能与传递引用有关,但我不明白为什么 Dart 会传递List引用而不是Egg. 现在我认为这种差异可能与赋值 …

scope future pass-by-reference variable-assignment dart

8
推荐指数
3
解决办法
2000
查看次数