2010-03-09 49 views

回答

14

要調用勢必瓦爾myfn1給出的字符串"myfn1"功能,你可以做這樣的事情:

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

因此,考慮到你的榜樣載體,假設你不需要任何額外的參數傳遞給你的函數(它足夠簡單明瞭如果需要修改此代碼),則可以執行以下操作:

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

(該nil s爲從印刷函數的返回值;請注意如何有後asdf通過print不產生斷行和asdf產生由prn被引述。)