Обновить и заменить значение карты
Я уверен, что это прямо здесь передо мной, но мне это не хватает. Изучите следующее:
(assoc :position entity
(add (:position entity) (:velocity entity)))
Я хочу сделать что-то вроде этого (с поддельной функцией под названием altermap):
(altermap :position entity #((add % (:velocity entity)))
Каков предложенный метод? Есть ли встроенная функция для # 2?
Ответы
Ответ 1
update-in
почти точно похож на вашу функцию altermap
, за исключением того, что вместо одного ключа требуется вектор ключей. Итак:
(update-in entity [:position] #(add % (:velocity entity)))
Насколько я знаю, нет однозначного варианта update-in
, но наличие скобок вокруг ключа не должно быть слишком громоздким.