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

相關問題