clojure - Clojure 中的关联

标签 clojure

Clojure 库中是否有“assoc-if”函数?即如果一个值是真的,用给定的键值更新 map 。我试图找到达到这种效果的东西,但缺乏。

(defn assoc-if
  [m key value]
  (if value (assoc m key value) m))

最佳答案

如果目标是避免重复 m ,您可以使用 conj :

(conj m (when value [key value]))

...或 Clojure 1.5 的新线程宏:
(-> m
  (cond-> value (assoc key value)))

如果避免重复 m 真的很重要和 value ,您必须自己编写或联系外部 clojure.core

关于clojure - Clojure 中的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16356888/

相关文章:

map - Clojure,将一个函数映射到两个参数,一个参数是固定的,另一个从列表中获取

Clojure:序列回向量

clojure - 进入列表

clojure - 调用从 EDN 文件中读取的函数

clojure - 在 Clojure 中定义 SPI

amazon-web-services - AWS ELB : Failed to load resource: the server responded with a status of 503 (Service Unavailable: Back-end server is at capacity)

http - get 请求中的零内容长度从 lighttpd (clj-http) 获取 400 Bad Request

clojure - 无法弄清楚(状态/禁止!)是如何工作的

clojure - 如何在 ClojureScript 的 cljs.core 命名空间中扩展宏

macros - 检查宏内函数的相等性