【问题标题】:Dart - Values in a Static typed ListDart - 静态类型列表中的值
【发布时间】:2013-11-21 20:06:34
【问题描述】:

为什么这不是 Dart 中的错误?

List<String> listA = ['aa', 1, 'cc']; //not compile time error, not run time error??

我正在使用 Dart 编辑器。

【问题讨论】:

    标签: dart dart-editor dartium


    【解决方案1】:

    List&lt;String&gt; listA = ['aa', 1, 'cc']; 就像写List&lt;String&gt; listA = &lt;dynamic&gt;['aa', 1, 'cc'];['aa', 1, 'cc']runtimeTypeList,与你使用的类型注解List&lt;String&gt; 兼容。

    如果您想定义String 列表以在编辑器中显示警告并在运行时出现错误,您应该更喜欢:

    List<String> listA = <String>['aa', 'cc'];
    // or
    final listA = <String>['aa', 'cc'];
    

    为了更好地理解这里的一些示例:

    print((['aa', 1, 'cc']).runtimeType);       // List
    print((['aa', 'cc']).runtimeType);          // List
    print((<dynamic>['aa', 'cc']).runtimeType); // List
    print((<String>['aa', 'cc']).runtimeType);  // List<String>
    
    List<int> l1 = ['aa', 1, 'cc'];         // ok
    List<int> l2 = ['aa', 'cc'];            // ok
    List<int> l3 = <dynamic>['aa', 'cc'];   // ok
    List<int> l4 = <String>['aa', 'cc'];    // warning in editor + runtime error
    

    【讨论】:

    • 谢谢。 List&lt;String&gt; listA = &lt;String&gt;['aa', 1, 'cc']; 确实在编辑器和运行时错误中给了我一个警告。 dart2js 不会因为这样的错误而停止编译,这是真的吗?为什么这不是编译时错误?
    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多