我查看了一些Quil examples,并注意到有两个不同的作者(对于“超”和“均衡”示例)使用:
(update-in s [:x] + dx vx)而不是简单地
(update s :x + dx vx)这是有原因的吗?如果s是一个深度嵌套的结构,那么它就有意义了。在这两种情况下,键的列表只有一个条目,所以对我来说,上面的两个片段看起来是等价的:
(let [dx 1
vx 2
s {:x 5}]
(println (update-in s [:x] + dx vx))
(println (update s :x + dx vx)))
{:x 8}
{:x 8}除了update-in可能会有更多的开销。
我能想到的唯一原因是,如果他们将状态嵌套在未来,它将简化转换。然而,对于这样一个简单的例子,这似乎不太可能,特别是考虑到到处都是魔术常量。
当结构不是嵌套的时候,有理由使用update-in而不是update吗?
https://stackoverflow.com/questions/41494233
复制相似问题