如何用 `lein change` 完全替换一个键

How to completely replace a key with `lein change`

我是 Clojure 的新手,我刚刚开始了解 leiningen 可以做的所有有趣的事情。一件看起来很酷的事情是 lein change,它允许您提供一个函数和参数以应用于 project.clj 中的键。因此,如果您的 :url 值为 https://www.example.com,您可以 运行

lein change url str "/myproject"

which 运行s (str (:url project) "/myproject")(假设项目结构像地图一样工作)。酷

我的问题是:有没有什么精辟的方法可以用lein change来完全替换一个key?我可以看到我需要为 lein change 提供一个忽略其第一个参数的函数,并为 returns 提供第二个参数。如果有这样的函数——称它为 clobber——那么我可以 运行:

lein change url clobber "https://new.example.com"

这将变成 (clobber (:url project) "https://new.example.com")

是否有像 clobber 一样工作的内置程序,或者我必须用 ->> 做一些黑魔法?

注意:我意识到我可以打开文件并更改值,但我想找到一个优雅的解决方案来解决这个难题!

lein change 接受伪函数 set 表示 "replace":

lein change url set "http://example.com"