【发布时间】:2020-12-03 11:34:59
【问题描述】:
List<int> filterEvens(List<int> ints) {
var foo = ints.where((n) => n.isEven) as List<int>;
var bar = ints.where((n) => n.isEven).toList();
return foo; // Runtime error
// return bar; // Works
}
void main() {
print(filterEvens([1]));
}
当我在上述函数的第一行明确地将Iterable 向下转换为List 时,会引发错误:
错误:需要一个“List”类型的值,但得到一个“WhereIterable”类型的值
【问题讨论】:
-
WhereIterable不是List所以你得到一个错误是有道理的? -
@julemand101 是
WhereIterable不是Iterable的子类型并且是List不是Iterable的子类型? -
是吗?
WhereIterable是Iterable,List也是。但是你不能说Iterable是List。 -
@julemand101 我们也不能说
Object是String,但我们当然可以使用as String,它适用于Object,对吧? -
没有?如果你有一个
int是一个Object你不能只说as String并期望事情会这样工作......
标签: dart