在clojure中我有vector [“myfn1”“myfn2”“myfn3”] 如何使用该向量中的字符串调用名为“myfn1”的函数
答案 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
产生的print
和asdf
产生的prn
之后没有换行符{{1}} 1}}被引用。)