gpt4 book ai didi

clojure 从字符串名称解析函数

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

在 clojure 1.2RC1 中,我希望根据其名称作为字符串获取一个函数并对其进行评估。

函数定义

(ns my-ns)

(defn mycar [x] (first x))

以下工作有效:

((ns-resolve *ns* (symbol "mycar")) '(3 4))
((intern *ns* (symbol "mycar")) '(3 4))
((eval (symbol "mycar")) '(3 4))

但是它们看起来很丑。有没有更好的办法?如果不是,上面哪一个是最惯用的?

最佳答案

这对我有用,无需使用 eval:

user> (defn mycar [x] (first x))
#'user/mycar
user> ((resolve (symbol "mycar")) [1 2 3])
1

这是有效的,因为解析会在当前命名空间中找到 mycar var,并且 var 会调用它绑定(bind)到的函数。这是第一个示例的较短版本。我使用它只是为了避免使用 eval。

关于clojure 从字符串名称解析函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407921/

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