gpt4 book ai didi

dart - 预期类型为 'List' 的值,但得到类型 'WhereIterable' 之一

转载 作者:行者123 更新时间:2023-12-03 04:19:45 24 4
gpt4 key购买 nike

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]));
}
当我明确地向下转换 IterableList在上述函数的第一行,它抛出一个错误:

Error: Expected a value of type 'List', but got one of type 'WhereIterable'

最佳答案

where返回 Iterable (在您的情况下,在运行时是 WhereIterable,它实现了 Iterable 接口(interface))。你的问题是你不能说所有IterableList但你可以说所有List对象也是 Iterable自从 List实现 Iterable界面。
所以你的类型转换为 as List<int>失败,因为 Dart 在运行时检查类型转换,它可以告诉 WhereIterableList 不兼容界面。toList()有效,因为这被记录为:

Creates a List containing the elements of this Iterable.


https://api.dart.dev/stable/2.9.1/dart-core/Iterable/toList.html
所以这个方法会返回一个新的 List包含返回的 WhereIterable 中的所有元素因为它已经遍历了从 Iterable 返回的所有元素并创造了一个全新的 List与元素的对象。

关于dart - 预期类型为 'List<int>' 的值,但得到类型 'WhereIterable<int>' 之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63398214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com