我以为我会发布这个,因为我没有真正理解发生的事情,通过猜测工作,我认为如果有人解释它可能会有帮助。解构形式和Compojure?
我知道如何在的元素得到:
(GET "/something" [some_arg] "this is the response body")
或
(GET "/something" {{some_arg "some_arg"} :params} "this is the response body")
虽然我不完全理解什么{some_arg "some_arg"}
部分做:在处理的Compojure地图PARAMS :(
我也想访问:remote-addr
部分请求以及some_arg
我最后用
(GET "/something" {{some_arg "some_arg"} :params ip :remote-addr}
(do-something-with some_arg ip))
所以,我得到的是不带引号的字符串some_arg
和ip
是变量的名字,而我想要的值约束,但上面的图是不是一个有效的Clojure地图。它是如何工作的?
我还得到这是根据Ring请求映射(它由某种方式由defroutes
宏提供)评估的,但上面的表达式不是函数或宏定义,因此它如何作为有效表达式存在我的代码?是否有某种宏观参数的正常规则暂停?我一直无法找到这个非Lisp'er可以理解的解构形式语法的定义。
我错过了一个事实,即GET是一个宏。在下面的答案中解释... – edoloughlin 2010-11-03 16:53:54