飞镖中的地图列表中是否没有类型检查?

时间:2014-08-27 15:56:43

标签: dart

例如,如果您有列表:

List<Map<String,int>> list =  <Map<String,int>>[
    {"string1": 44},
    {"string2" : "string in place of int"}
];

List<Map<String,int>> list =  new List<Map<String,int>>();
list.addAll([
    {"string1": 44},
    {"string2" : "string in place of int"}]
);

不应该有“string代替int”的警告吗?

3 个答案:

答案 0 :(得分:3)

除非您在已检查模式下执行代码,否则Dart不会使用类型。

当Dart未处于检查模式(生产中应该是这种情况)时根本没有类型,错误的类型或正确的类型没有区别(没有错误,没有速度增益)。

答案 1 :(得分:2)

要从分析器或DartEditor获取警告,您需要像

一样编写它
List<Map<String,int>> list =  <Map<String,int>>[
    <String,int>{"string1": 44},
    <String,int>{"string2" : "string in place of int"}
];

答案 2 :(得分:0)

在Dart中,静态检查器不会抱怨每个可能的类型违规,因为代码有可能是正确的。在运行时,非法操作完成后会出现异常。

当我使用时:

{"string2" : "string in place of int"}

我制作地图:Map<dynamic,dynamic>,动态关闭静态检查器。

Dart允许此代码运行,因为向下分配可能有效,Dart乐观地知道您正在做什么。

所以我的地图可能是Map<String,int>然后它是正确的,如果没有抛出异常。