【问题标题】:Dart type safety for map key, not working?地图键的飞镖类型安全,不起作用?
【发布时间】:2022-03-31 14:58:38
【问题描述】:

具有以下琐碎的飞镖功能:

void main()
{  
    Map<String, dynamic> m = { 2 : 200.0, 'x' : 8.0 }; 
    print( "m: $m");
}

为什么 Dart 编辑器/编译器不抱怨 int 键类型 (2)?我希望我的所有键类型都是字符串,但这似乎运行良好。

【问题讨论】:

  • 至少try.dartlang.org无法编译并输出正确的错误信息
  • 由于其他人同意这是一个错误,我已经报告了它here

标签: dart


【解决方案1】:

这似乎是一个错误。尽管运行时类型为 int,但编辑器和 VM 不会抱怨。

但您可以使用解决方法,直到解决此问题:

void main() {
  Map<String, dynamic> m = {};
  m[2] = 200.0;  // editor complains here. VM in checked mode still works, for some reason.
  m['x'] = 8.0;
}

【讨论】:

  • 嗯,我看到编辑确实警告过这一点,但奇怪的是,使用 try.dartlang.org 没有注意到这个错误。
  • @rich.e 确实很奇怪。我最好的猜测是 try.dartlang.org 使用了不同的分析器。
猜你喜欢
  • 1970-01-01
  • 2021-10-11
  • 2017-01-31
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多