En clojure 1.2RC1, je souhaite obtenir une fonction basée sur son nom en tant que chaîne et l'évaluer.Fonction de résolution de clojure à partir du nom de chaîne
Définition de la fonction
(ns my-ns)
(defn mycar [x] (first x))
Voici travaillé:
((ns-resolve *ns* (symbol "mycar")) '(3 4))
((intern *ns* (symbol "mycar")) '(3 4))
((eval (symbol "mycar")) '(3 4))
mais ils semblent laids. Y a-t-il un meilleur moyen? Si non, lequel des énoncés ci-dessus est le plus idiomatique?
Je seconde l'utilisation de 'resolve' ou' ns-resolve'. Faites également très attention lorsque vous utilisez 'intern'. Il est tout à fait de clobber des choses en l'utilisant. – kotarak
Des pointeurs vers plus d'informations sur "clobbering" causé par interne? – chris
Définir un Var avec interne et vos méta-données d'origine sur le Var sera parti.Ignorer. Semble être fixé. Au moins, je ne peux plus le reproduire. – kotarak