在编辑器提示中你会得到:
scores.putIfAbsent(key, () => numValue);
Run Code Online (Sandbox Code Playgroud)
我使用命令向我的地图添加单个"行":
myMap.putIfAbsent(9, () => 'Planned');
yourMap.putIfAbsent('foo', () => true);
Run Code Online (Sandbox Code Playgroud)
那么:那是什么意思?
该putIfAbsent函数接受两个参数,键和一个将返回新值的函数(如果需要).
请参阅https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-core.Map#id_putIfAbsent
第二个参数是返回新值的函数,而不是值本身的原因是,如果映射已经包含键,则有时不希望创建值.
请考虑以下示例:
var map = ...;
var key = ...;
map.putIfAbsent(key, new Value());
Run Code Online (Sandbox Code Playgroud)
如果map已包含key,则根本不使用新的值对象.如果Value对象分配对象有些沉重或昂贵,这是一个不必要的副作用.
通过取代功能
var map = ...;
var key = ...;
map.putIfAbsent(key, () => new Value());
Run Code Online (Sandbox Code Playgroud)
它只会在key不存在的情况下执行该函数map,并且需要该值.
所以,回答语法问题.表单的表达式() => ...是函数表达式的简写,返回第一个表达式的结果.一个小例子:
var function = () => "some string";
var str = function();
print(str);
Run Code Online (Sandbox Code Playgroud)
将打印"一些字符串".
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |