Tôi nghĩ tôi sẽ đăng bài này khi tôi làm cho nó hoạt động thông qua phỏng đoán mà không có sự hiểu biết thực sự về những gì đang xảy ra và tôi nghĩ nó có thể hữu ích nếu ai đó giải thích.Hình thức hủy cấu trúc và tính năng Soạn thảo?
Tôi hiểu làm thế nào để có được một yếu tố của: params bản đồ trong một handler Compojure:
(GET "/something" [some_arg] "this is the response body")
hoặc
(GET "/something" {{some_arg "some_arg"} :params} "this is the response body")
mặc dù tôi không hoàn toàn hiểu những gì các phần {some_arg "some_arg"}
đang làm :(
Tôi cũng muốn truy cập phần :remote-addr
của yêu cầu cũng như some_arg
. Và tôi đã kết thúc bằng
(GET "/something" {{some_arg "some_arg"} :params ip :remote-addr}
(do-something-with some_arg ip))
Vì vậy, tôi nhận được rằng các dây không thể viện chứng some_arg
và ip
là tên của các biến mà tôi muốn các giá trị ràng buộc nhưng bản đồ trên không phải là một bản đồ có giá trị Clojure. Làm thế nào nó hoạt động?
Tôi cũng nhận được rằng điều này được đánh giá dựa trên bản đồ yêu cầu Ring (được cung cấp bởi macro defroutes
) nhưng biểu thức ở trên không phải là hàm hoặc định nghĩa macro sao cho nó có thể tồn tại như một biểu thức hợp lệ ma cua toi? Có một số loại đình chỉ của các quy tắc bình thường cho các đối số vĩ mô? Tôi đã không thể tìm thấy một định nghĩa cú pháp của các hình thức destructuring comprehensible này không Lisp'er.
Tôi đã bỏ lỡ thực tế GET là macro. Giải thích trong câu trả lời dưới đây ... – edoloughlin