Max*_*iro 0 clojure compojure ring compojure-api
我现在开始进行函数式编程,而且在没有变量的情况下工作变得非常疯狂.
我读过的每个教程都说它不是很酷的重新定义变量,但我不知道如何在不保存变量状态的情况下解决我的实际问题.
例如:我正在研究API,我希望在请求中保留值.让我们说我有一个端点,添加一个person,我有一个列表persons,我想redefine或改变我的persons列表添加新的值person.我怎样才能做到这一点?
可以使用var-set,alter-var-root或者conj!?
(对于api我正在使用compojure-api,每个person都是一个Hash)
Clojure将值与身份区分开来.您可以使用atoms来管理compojure应用程序中的状态.
(def persons (atom [])) ;; init persons as empty vector
(swap! persons #(conj % {:name "John Doe"})) ;; append new value
Run Code Online (Sandbox Code Playgroud)
您可以在文档中找到更多内容:
https://clojure.org/reference/atoms
https://clojure.org/reference/data_structures
https://clojuredocs.org/clojure.core/atom