Comment évaluez-vous une chaîne comme une expression de Clojure?
-
19-09-2019 - |
Question
Comment puis-je obtenir quelque chose de semblable à ce qui suit:
(evaluate-text "(+ 1 2)") ; resolves to 3
La solution
(load-string "(+ 1 2)")
Autres conseils
user> (eval (read-string "(+ 1 2)"))
3
Vous ne devriez probablement pas besoin jamais de le faire. Les macros et font SNF ce genre de chose inutile 99% du temps. Ceci est très fragile, et peut être dangereux si ces chaînes viennent de l'entrée de l'utilisateur, et ainsi de suite.
Comment similaire il être? Le eval
de Clojure fonctionne sur les listes, donc:
(eval (list + 1 2)) #=> 3
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow