строка преобразования типа clojure в символ - PullRequest
12 голосов
/ 09 марта 2010

в ближайшем будущем у меня есть вектор ["myfn1" "myfn2" "myfn3"] как я могу вызвать функции с именем "myfn1" ... используя строки из этого вектора

1 Ответ

14 голосов
/ 09 марта 2010

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

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

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

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

1009 * Е.Г. *

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...