当函数名称存储为字符串值时调用函数

时间:2012-09-06 05:16:58

标签: clojure

我有一个定义为

的函数
(defn a [] "Hello")

我有另一个变量b

(def b "a")

我想调用字符串值'b'表示的函数,即应该调用'a'。我怎么做?

1 个答案:

答案 0 :(得分:10)

您需要将其转换为symbol,然后转换为resolve

user=> ((resolve (symbol b)))
"Hello"

user=> ((-> b symbol resolve))
"Hello"

为了澄清 little ,这里有一个稍微详细的解决方案:

(let [func (-> b symbol resolve)]
  (func arg1 arg2 arg3)) ; execute the function