我想在我拥有的地图中更改某个键的值。除了使用update
的情况下,如果我要求更新的密钥不存在,我会发现错误,使用update
而不是set
会有什么好处(如果有的话)?我发现set
更加简洁/清晰。事实上,基于文档,人们可以(盲目地)认为set
实际上比update
更有效,因为set
不必为get
执行updater
{1}}功能。
答案 0 :(得分:15)
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})
VS。与set
:
m.set('b', inc(m.get('b'))
这个例子非常简单,但是当您开始围绕数据构建算法时(例如FP)而不是相反的方式,以这种方式应用变换到您的数据的模式变得更加常见。我之前在像game.update('player', moveLeft)
这样的游戏中做过一些事情。
如果您知道新值是什么,那么只需使用set
update(key, x => val)
就相当愚蠢。
答案 1 :(得分:1)
(...)想知道使用更新是否仍然是好的做法,或者设置是否正常
在他对@ andrew-marshall的回应的评论中
我不认为这是一个好的或坏的做法的问题。
据我所知,有两种不同的用例:
set
update
所以你不认为你应该总是使用set
而不是update
(或者相反),我认为你应该使用其中一种,具体取决于你的用例