gpt4 book ai didi

clojure - 在包含特定元数据的命名空间中查找函数的惯用方法?

转载 作者:行者123 更新时间:2023-12-04 16:51:04 25 4
gpt4 key购买 nike

我试图找出为包含特定元数据的函数控制命名空间的最佳方法。我想出了一个解决方案,但感觉有点尴尬,我完全不确定我是否会以正确的方式进行。这还有第二个组成部分:我不只是想要函数的名称,我想要找到它们然后执行它们。这是我目前正在做的事情的一个片段:

(defn wrap-routes
[req from-ns]
(let [publics (ns-publics from-ns)
routes (->>
(keys publics)
(map #(meta (% publics)))
(filter #(= (:route-handler %) true))
(map #(:name %)))
resp (first
(->>
(map #((% publics) req) routes)
(filter #(:status %))))]
(or resp not-found)))

正如您所看到的,我正在做各种体操以查看我的元数据是否附加到给定命名空间中的任何函数,然后在此之后做额外的工作以恢复实际的函数。我相信一定有更好的方法。所以我的问题是,你会怎么做?

最佳答案

(defn wrap-routes [req from-ns]
(or (first (filter :status
(for [[name f] (ns-publics from-ns)
:when (:route-handler (meta f))]
(f req))))
not-found))

关于clojure - 在包含特定元数据的命名空间中查找函数的惯用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15790521/

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