繁体   English   中英

Immutable.js Map set vs update

[英]Immutable.js Map set vs update

我想在我拥有的地图中的某个键上更改值。 除了使用update这一事实,如果我要求更新的密钥不存在,将给我一个错误,使用update over set有什么好处(如果有的话)? 我发现set更加简洁/清洁。 实际上,基于文档,人们可以(盲目地)认为set实际上比update更有效,因为set不必执行updater函数的get

当您的新值是当前值转换的结果时, update功能更强大:

const inc = (x) => (x + 1)
const m = Immutable.Map({a: 1, b: 2, c: 3})
m.update('b', inc) #=> {a: 1, b: 3, c: 3})

set

m.set('b', inc(m.get('b'))

这个例子非常简单,但是当您开始围绕数据构建算法(如在FP中 )而不是相反的方式时,以这种方式应用变换到数据的模式变得更加常见。 我之前在game.update('player', moveLeft)这样的游戏中做过一些事情。

但是,如果您知道新值是什么,那么只需使用set as update(key, x => val)就相当愚蠢了。

@MatthewHerbst说:

(...)想知道使用更新是否仍然是好的做法,或者如果设置没问题

在评论@ andrew-marshall的回应时

我不认为这是一个好的或坏的做法的问题。

据我所知,有两种不同的用例:

  1. 您设置的值不依赖于以前的值:use set
  2. 您设置的值取决于之前的值:使用update

所以你不认为你应该总是使用set over update (或者反过来),我认为你应该使用其中一个,具体取决于你的使用案例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM