gpt4 book ai didi

clojure - 如何在 Clojure 中的函数内定义函数并引用该函数?

转载 作者:行者123 更新时间:2023-12-03 15:17:47 24 4
gpt4 key购买 nike

我写了一个函数来计算两组的对称差异(4clojure 站点上的问题之一)。该函数通过了单元测试,但没有我想要的那么干净,因为我有重复的代码。

(fn [x y] (set (concat 
(keep-indexed #(if (nil? (get y %2)) %2) x)
(keep-indexed #(if (nil? (get x %2)) %2) y))))

显然,我更喜欢这样的事情:
(fn [x y] (set (concat (diff x y) (diff y x))))

diff 函数被定义并引用为“内联”,但我不知道如何在一个 fn 块中做到这一点。

最佳答案

使用 letletfn :

(fn [x y]
(let [diff (... function body here ...)]
(set
(concat (diff x y) (diff y x)))))

关于clojure - 如何在 Clojure 中的函数内定义函数并引用该函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8002038/

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