gpt4 book ai didi

clojure - "do additional stuff when ..."的 Clojure 方式是什么

转载 作者:行者123 更新时间:2023-12-02 15:40:18 24 4
gpt4 key购买 nike

我有一个函数“my-func”,它处理作为参数获取的 map x并返回一个 map 。处理过程相当长,所以这里我将其转移到函数 block-with-several-function-calls-on-x如果传入映射包含 :special-key,则应将额外的键值对添加到传出映射中。

(defn my-func [x]
(if (contains? x :special-key)
(assoc (block-with-several-function-calls-on-x x)
:extra-key true)
(block-with-several-function-calls-on-x x)))

我真的很想将block-with-several-function-calls-on-x的代码保留在my-func中。在其他编程语言中,我只需将该部分的输出保存在变量中,然后(如果需要)添加附加部分,然后返回值。有人告诉我使用 let 不是“Clojuresque”。

那么将代码转移到函数(就像我上面所做的那样)是唯一的方法吗?或者是一个do-additonal-stuff-to-output-of-second-block函数:

(defn my-func [x]
(do-additional-stuff-to-output-of-second-block
(when (contains? x :special-key)
(assoc :extra-key true))
(block-with-several-function-calls-on-x x)))

最佳答案

cond->cond->>->->> 的条件版本,可能适合您的需求:

(defn my-func
[x]
(cond-> (block-with-several-function-calls-on-x x)
(contains? x :special-key) (assoc :extra-key true)
(contains? x :other-key) (dissoc :we-dont-need-this)))

尽管如此,只有一个条件,这可能不是可读性的缩影。

关于clojure - "do additional stuff when ..."的 Clojure 方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com