Я хотел бы отправить выражение clojure в строку, которая будет оцениваться в приемнике, которая может быть веб-службой, написанной на compojure. Например, предположим, что у меня есть строка «(* 7 6)», которую я хотел бы включить в (* 7 6), которую я могу передать в eval и получить 42. Эта операция тривиальна в JavaScript, но не совсем уверен, как это сделать в clojure. Советы?как преобразовать строку в выражение clojure?
ответ
Это должно сделать трюк:
(eval (read-string "(* 7 6)")) ;; 42
Или, короче:
(load-string "(* 7 6)") ;; 42
Я чувствую, что это следует упомянуть здесь; будьте осторожны, даже если вы не вызываете eval, сама строка чтения будет оценивать код: '' '(read-string" # = (clojure.java.shell/sh \ "ls \") ")' '' – bmaddy
Я не нашел документацию для синтаксиса # = читателя. Не могли бы вы объяснить, пожалуйста? Это очень важное замечание! –
Я нашел ответ в следующем вопросе SW http://stackoverflow.com/questions/6427967/clojure-reader-macro. Это довольно большая проблема, поскольку это делает невозможным предотвращение оценки без написания моего собственного читателя и может испортить мои планы использования clojure для безопасной инъекции. –
- 1. Как преобразовать строку в функцию в Clojure?
- 2. Как преобразовать ключевое слово clojure в строку?
- 3. Как преобразовать пространство имен Clojure в строку?
- 4. Как вы оцениваете строку как выражение clojure?
- 5. Как преобразовать строку в регулярное выражение
- 6. Как преобразовать строку в логическое выражение
- 7. Как преобразовать строку в булево выражение
- 8. Как преобразовать выражение Python в строку
- 9. как преобразовать строку в математическое выражение программно
- 10. Оценить математическую строку в Clojure
- 11. Как преобразовать '(' (...) '(...) ...) в [[...] [...] ...] в Clojure?
- 12. Как преобразовать LazySeq символов в строку в Clojure?
- 13. C# преобразовать строку в int в выражение
- 14. Выражение SSIS: преобразовать дату в строку
- 15. Как преобразовать выражение z3 в выражение infix?
- 16. Python: преобразовать строку формата в регулярное выражение
- 17. Clojure многострочный регулярное выражение
- 18. Как преобразовать строку/преобразовать строку в Expr
- 19. Как преобразовать математическое выражение в строку без оценки в Ruby?
- 20. Как преобразовать строку в условное выражение в C++ или C
- 21. Как преобразовать строку в условное выражение в java (Android)?
- 22. Как преобразовать строку в условное выражение в PHP?
- 23. Как преобразовать строку в математическое выражение в R?
- 24. Вычислить строку как выражение
- 25. Как преобразовать список в JSON в Clojure?
- 26. Как преобразовать последовательность в байт [] в Clojure?
- 27. Как преобразовать вектор в список в Clojure
- 28. Как преобразовать регулярное выражение в выражение extglob?
- 29. как преобразовать выражение python в выражение java?
- 30. Как преобразовать строку [] в строку?
Берегись, это позволит веб-клиент (любой в Интернете), чтобы выполнить произвольный код на вашем веб-сервере процесс, такой как переопределение варов, обстрел, удаление файлов и т. д. – Chouser
Получил его. Мое приложение будет аутентифицировать и авторизировать отправителя для полного доверия, прежде чем разрешить эту операцию. В качестве альтернативы, он будет анализировать, анализировать и/или песочницу вводить код. –