【问题标题】:Why I can add a List as an argument in where it must be an iterable object?为什么我可以在它必须是可迭代对象的地方添加一个 List 作为参数?
【发布时间】:2015-03-11 04:12:21
【问题描述】:

我有这个代码

var list = ['arg1=val1', 'arg2=val2', 'arg3=val3'];
var nlist = new List();
list.forEach( (e) {
  nlist.addAll(e.split('='));
});
print(nlist);

addAll 需要一个参数是Iterable。但在这种情况下,e.split() 返回List,而不是Iterable

那为什么我能做到呢?

【问题讨论】:

  • 你可以使用nlist = list.expand((e) => e.split('='));来简化。

标签: list dart iterable


【解决方案1】:

List 实现了Iterable,因此是Iterable(参见标题下方的https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:core.List

【讨论】:

  • 更具体地说,Dart 支持多态性,这就是为什么您能够传递子类型的对象来代替超类型的原因。见en.wikipedia.org/wiki/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2022-08-24
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多