2010-03-09 8 views

Respuesta

14

Para llamar a un función obligado a Var myfn1 dada la cadena "myfn1", que podría hacer algo como esto:

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

Por lo tanto, dada su ejemplo del vector y suponiendo que no es necesario pasar ningún argumento adicional a sus funciones (que es lo suficientemente lisa y llana para modificar este código si lo hace), podría hacer lo siguiente:

(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) 

(Los nil s son los valores de retorno de las funciones de impresión, tenga en cuenta la forma en que no hay salto de línea después de la asdf producido por print y la asdf produce por prn se cita.)

Cuestiones relacionadas