Pensé que publicaría esto porque lo hice para resolver conjeturas sin una comprensión real de lo que está pasando y pensé que sería útil si alguien lo explicara.Destructuring forms and Compojure?
entiendo cómo llegar a un elemento de la: params mapa en un manejador Compojure:
(GET "/something" [some_arg] "this is the response body")
o
(GET "/something" {{some_arg "some_arg"} :params} "this is the response body")
aunque no entiendo por completo lo que la parte {some_arg "some_arg"}
está haciendo :(
También quería acceder a la parte :remote-addr
de la solicitud, así como some_arg
. Y terminé con
(GET "/something" {{some_arg "some_arg"} :params ip :remote-addr}
(do-something-with some_arg ip))
Por lo tanto, entiendo que las cuerdas no cotizados some_arg
y ip
son los nombres de las variables a las que quieren los valores ligados pero el mapa de arriba no es un mapa Clojure válida. ¿Como funciona?
También entiendo que esto se evalúa con el mapa de solicitud de timbre (que de alguna manera es proporcionado por la macro defroutes
) pero la expresión anterior no es una función o definición de macro entonces ¿cómo puede 'existir' como una expresión válida en ¿mi código? ¿Hay algún tipo de suspensión de las reglas normales para los macro argumentos? No he podido encontrar una definición de la sintaxis de las formas de desestructuración comprensible para este no Lisp'er.
Eché de menos el hecho de que GET es una macro. Explicado en la respuesta a continuación ... – edoloughlin