我正在实验非空功能。我真的很兴奋,因为这是我在Dart中排名第一的功能!
但是,我的代码无法在Maps上调用[]
,因为返回类型不可为空,并且我所有后续的null检查都标记为“不需要”。
一旦nnbd发布,V operator [](Object key);
会变成V? operator [](Object key);
吗?
有没有办法使这项工作现在可行?例如,是否已经有(实验性的)SDK的nnnd版本?
答案 0 :(得分:3)
很有可能 <table>
上的[]
运算符将获得类型Map
。
这使现有的地图实现可以继续工作。
另一种方法是更改所有现有映射的实现,以在没有键的条目时或仅在value-type为不可为null时抛出。
这将需要重写大量代码,这些代码合理地假设检查V? operator[](Object key)
返回值是null
运算符的正确用法。