2
是否有任何性能或定义[]或放,如果没有,两个Map Assignments []和putifabsent之间有区别吗?
map["x"] = 123;
map.putifabsent("z",()=> 123);
是否有任何性能或定义[]或放,如果没有,两个Map Assignments []和putifabsent之间有区别吗?
map["x"] = 123;
map.putifabsent("z",()=> 123);
map['x'] = 123
除了将覆盖键'x'
的值,如果它已经在地图上,而map.putifAbsent('x',()=> 123)
不会与任何其他区别吗?
请注意,putifAbsent
返回对应于提供的密钥的值。您可以使用它来获取某个键的值,如果在映射中缺少该键(这是为什么它的第二个参数是一个函数,而不是一个正值),则会生成并随即插入一个值。
这让我感到这是该方法的用例,但名称getValuePutIfAbsent
被认为太长。
方法名称的可能来源是SmallTalk'at:ifAbsentPut:'消息。由于'[]'操作符(SmallTalk的'at:'的Dart版本)没有可选参数,所以它必须是一个方法。 – lrn
所以'map.putIfAbsent('x',()=> 123)'和map ['x'] ?? = 123'一样吗? – Ganymede
对地图的影响和表达式的值是相同的。请参阅https://dartpad.dartlang.org/766a368689d53496ee325aa589cf43e8。 'putifAbsent'显然早于'?? ='。 –