2010-03-09 16 views

Odpowiedz

14

Aby wywołać funkcja związana Var myfn1 dany ciąg "myfn1", można zrobić coś takiego:

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

więc, biorąc pod uwagę Twój przykład wektor i zakładając, że nie trzeba podawać żadnych dodatkowych argumentów do funkcji (to wystarczy straighforward aby zmodyfikować ten kod, jeśli to zrobisz), możesz wykonać następujące czynności:

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

(The nil s są wartości powrocie z funkcji drukowania; zauważyć, jak nie ma LINEBREAK po asdf produkowane przez print i asdf produkuje przez prn jest cytowany.)