2017-03-01 21 views

回答

4
map['x'] = 123

除了将覆盖键'x'的值,如果它已经在地图上,而map.putifAbsent('x',()=> 123)不会与任何其他区别吗?

请注意,putifAbsent返回对应于提供的密钥的值。您可以使用它来获取某个键的值,如果在映射中缺少该键(这是为什么它的第二个参数是一个函数,而不是一个正值),则会生成并随即插入一个值。

这让我感到这是该方法的用例,但名称getValuePutIfAbsent被认为太长。

+1

方法名称的可能来源是SmallTalk'at:ifAbsentPut:'消息。由于'[]'操作符(SmallTalk的'at:'的Dart版本)没有可选参数,所以它必须是一个方法。 – lrn

+0

所以'map.putIfAbsent('x',()=> 123)'和map ['x'] ?? = 123'一样吗? – Ganymede

+0

对地图的影响和表达式的值是相同的。请参阅https://dartpad.dartlang.org/766a368689d53496ee325aa589cf43e8。 'putifAbsent'显然早于'?? ='。 –

相关问题