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'顯然早於'?? ='。 –