sep*_*p2k 30
update-in采用一个函数,因此您可以更简洁地更新给定位置的值,具体取决于旧值.例如,而不是:
(assoc-in m [list of keys] (inc (get-in m [list of keys])))
Run Code Online (Sandbox Code Playgroud)
你可以写:
(update-in m [list of keys] inc)
Run Code Online (Sandbox Code Playgroud)
当然,如果新值不依赖于旧值,assoc-in则足够且您不需要使用update-in.
这不是你问题的直接答案,但是为什么类似函数update-in可能存在的一个原因是效率 - 而不仅仅是方便 - 如果它能够"就地"更新地图中的值.那就是,而不是
可以想象一个算法会省略对密钥的第二次搜索:
不幸的是,目前的实施update-in并没有做到这种"就地"更新.它get用于提取和assoc更换.除非assoc使用最后一个查找键和相应的键值元组的一些缓存,否则assoc必须再次寻找密钥.
| 归档时间: |
|
| 查看次数: |
8816 次 |
| 最近记录: |