Map []是可为空还是不可为空?

时间:2019-08-24 19:50:08

标签: dart

我正在实验非空功能。我真的很兴奋,因为这是我在Dart中排名第一的功能!

但是,我的代码无法在Maps上调用[],因为返回类型不可为空,并且我所有后续的null检查都标记为“不需要”。

一旦nnbd发布,V operator [](Object key);会变成V? operator [](Object key);吗?

有没有办法使这项工作现在可行?例如,是否已经有(实验性的)SDK的nnnd版本?

1 个答案:

答案 0 :(得分:3)

很有可能 <table>上的[]运算符将获得类型Map。 这使现有的地图实现可以继续工作。

另一种方法是更改​​所有现有映射的实现,以在没有键的条目时或仅在value-type为不可为null时抛出。 这将需要重写大量代码,这些代码合理地假设检查V? operator[](Object key)返回值是null运算符的正确用法。