我希望将一系列函数应用于数据,例如pipe: http://ramdajs.com/0.14/docs/#pipe
我知道它有->>
和->
,我也很难定义内部函数
(defn create
([code error] {:statusCode code :error error})
([code error & [message data]]
(create code error) - I want pipe it result
to a function that check if
message if defined then merge with
{:message message}, then
apply to a function that checks if data
is defined an merge with it
))
答案 0 :(得分:2)
您可以使用cond->
threading macro仅合并已定义的变量:
(defn create
([code error]
{:statusCode code :error error})
([code error & [message data]]
(cond-> (create code error)
message (assoc :message message)
data (assoc :data data ))))
或者您可以定义小型assoc-if-defined
帮助程序并使用普通的->
线程宏:
(defn- assoc-if-defined
[m k v]
(if (nil? v) m (assoc m k v)))
(defn create
([code error]
{:statusCode code :error error})
([code error & [message data]]
(-> (create code error)
(assoc-if-defined :message message)
(assoc-if-defined :data data ))))