Làm thế nào tôi sẽ nhận được một cái gì đó tương tự như sau ?:Làm thế nào để bạn đánh giá một chuỗi như là một biểu thức clojure?
(evaluate-text "(+ 1 2)") ; resolves to 3
Làm thế nào tôi sẽ nhận được một cái gì đó tương tự như sau ?:Làm thế nào để bạn đánh giá một chuỗi như là một biểu thức clojure?
(evaluate-text "(+ 1 2)") ; resolves to 3
(load-string "(+ 1 2)")
Làm thế nào tương tự nó có được? Clojure của eval
công trình trong danh sách, vì vậy:
(eval (list + 1 2)) #=> 3
user> (eval (read-string "(+ 1 2)"))
3
Bạn có lẽ nên không bao giờ cần phải làm điều này. Macros và fns làm cho loại điều này không cần thiết 99% thời gian. Điều này khá dễ vỡ và có thể không an toàn nếu các chuỗi này đến từ đầu vào của người dùng, v.v.
Vâng tôi muốn làm một cái gì đó hoàn toàn không an toàn: một chatbot REPL. –
Có một clojurebot trong #clojure. –
load-string thực hiện chính xác những gì anh ta đang tìm kiếm – Abhijith
Tôi biết về eval, nhưng tôi nghĩ nó không hiệu quả với tôi. Tôi thực sự muốn đánh giá một "String" –