为什么我可以在必须是可迭代对象的地方添加一个 List 作为参数?

Why I can add a List as an argument in where it must be an iterable object?

我有这个代码

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() return List,而不是 Iterable

那么为什么我可以这样做?

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