Подтвердить что ты не робот

Clojure строка преобразования типа в символ

in clojure У меня есть вектор [ "myfn1" "myfn2" "myfn3" ] как я могу вызвать функции с именем "myfn1"... используя строки из этого вектора

4b9b3361

Ответ 1

Чтобы вызвать функцию, связанную с Var myfn1 с учетом строки "myfn1", вы можете сделать что-то вроде этого:

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

Итак, учитывая ваш примерный вектор и предполагая, что вам не нужно передавать какие-либо дополнительные аргументы в свои функции (достаточно, чтобы изменить этот код, если вы это сделаете), вы можете сделать следующее:

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

например.

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

(nil - это возвращаемые значения из функций печати, обратите внимание на то, что нет строки после asdf, созданной print, и asdf, вырабатываемый с помощью prn.)