clojure类型转换字符串到符号

时间:2010-03-09 15:19:01

标签: clojure

在clojure中我有vector [“myfn1”“myfn2”“myfn3”] 如何使用该向量中的字符串调用名为“myfn1”的函数

1 个答案:

答案 0 :(得分:14)

要在给定字符串myfn1的情况下调用绑定到Var "myfn1"的函数,您可以执行以下操作:

((resolve (symbol "myfn1")) ...) ; ... indicates where to put any arguments

因此,给定您的示例向量并假设您不需要向函数传递任何其他参数(如果您这样做,它足够直接修改此代码),您可以执行以下操作:

(map #((resolve (symbol %))) ["myfn1" "myfn2" "myfn3"])

E.g。

user=> (map #((resolve (symbol %1)) %2) ["println" "print" "prn"] ["asdf" "asdf" "asdf"])
(asdf
asdfnil "asdf"
nil nil)

nil s是打印功能的返回值;请注意asdf产生的printasdf产生的prn之后没有换行符{{1}} 1}}被引用。)