在clojure我有vector ["myfn1""myfn2""myfn3"]我如何调用名为"myfn1"的函数...使用该向量中的字符串
Mic*_*zyk 14
要在myfn1给定字符串的情况下调用绑定到Var的函数"myfn1",您可以执行以下操作:
((resolve (symbol "myfn1")) ...) ; ... indicates where to put any arguments
Run Code Online (Sandbox Code Playgroud)
因此,给定您的示例向量并假设您不需要将任何其他参数传递给您的函数(如果您这样做,它足够直接修改此代码),您可以执行以下操作:
(map #((resolve (symbol %))) ["myfn1" "myfn2" "myfn3"])
Run Code Online (Sandbox Code Playgroud)
例如
user=> (map #((resolve (symbol %1)) %2) ["println" "print" "prn"] ["asdf" "asdf" "asdf"])
(asdf
asdfnil "asdf"
nil nil)
Run Code Online (Sandbox Code Playgroud)
(nils是打印函数的返回值;请注意在asdf生成者print和asdf生成者之后如何prn引用没有换行符.)