gpt4 book ai didi

dart - Dart :在运行时确定/检查列表类型

转载 作者:行者123 更新时间:2023-12-03 03:49:46 25 4
gpt4 key购买 nike

如果我们测试一下

print([1] is List<int>); // prints true
如果我们测试一下
List a = [1];
print(a is List<int>); // prints false
从技术上讲,这是正确的,因为列表稍后可能会获得另一种类型的对象。
有什么方法可以通过列表的元素来确定列表的类型,还是需要使用循环来检查每个元素的类型?

最佳答案

您对第二个示例是错误的。以下代码返回false的原因是因为您使用List作为类型,而不是使用varfinalList<int>

List a = [1];
print(a is List<int>); // prints false
Dart在您的示例中将 List视为 List<dynamic>,因此将使列表的类型也包含 dynamic:
List a = [1];
print(a is List<int>); // prints false
print(a.runtimeType); // List<dynamic>
但是,如果您改为让Dart自动分配变量的类型,例如:
final a = [1]; // or var
print(a is List<int>); // prints true
print(a.runtimeType); // List<int>
然后Dart在创建列表并分配正确的类型时将静态地查看列表的内容。
List读取为 List<dynamic>的功能称为隐式动态功能,当引入不可为null的功能时,该功能将消失。如果您遵循以下指南,也可以立即禁用此功能:
https://dart.dev/guides/language/analysis-options#enabling-additional-type-checks
如果禁用此功能,则Dart分析仪将出现错误:

Missing type argument for list literal. Try adding an explicit type like 'dynamic', or enable implicit-dynamic in your analysis options file.

关于dart - Dart :在运行时确定/检查列表类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63956509/

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